我已经在VS2015 RC中创建了一个C#测试项目。它在本地构建,但当我尝试在CI构建服务器(TeamCity)上构建时,它会失败,并显示错误:
UnitTest1.cs(2,17):error CS0234:类型或命名空间名称'VisualStudio‘在命名空间'Microsoft’中不存在(是否缺少程序集引用?) ... .Tests.csproj UnitTest1.cs(9,10):错误CS0246:未能找到类型或命名空间名称'TestMethod‘(是否缺少using指令或程序集引用?) ... .Tests.csproj
显然,这是因为包含这些名称空间的程序集(Microsoft.VisualStudio.QualityTools.UnitTestFramework
)不在构建服务器上;在我的本地计算机上,它驻留在C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
上。
我可以将程序集复制到我的解决方案中,这样它就成为代码库的一部分,但是手动移动文件感觉有点笨拙。我在nuget上到处搜索,找到了http://www.nuget.org/packages/Microsoft.VisualStudio.QualityTools.UnitTestFramework/,我认为它可以做到这一点,但安装该软件包失败了,并显示以下信息:
安装程序包:无法安装程序包'Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1‘。您正尝试将此程序包安装到目标为'.NETFramework,Version=v4.5.2‘的项目中,但该程序包不包含任何与该框架兼容的程序集引用或内容文件
我解决这个问题的最佳选择是什么?令我惊讶的是,在VS2015中创建一个测试项目并没有自动包含我需要的所有依赖项,尽管我可能太天真了(我是一个初出茅矩的网民)。
发布于 2017-06-27 16:27:40
答案类似于eng.augusto's answer中的选项1。
微软没有为最新版本的Microsoft.VisualStudio.QualityTools.UnitTestFramework,
提供NuGet,而是将其作为Visual Studio (normally at C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
)的一部分提供。
我创建了文件夹Microsoft.VisualStudio.QualityTools
作为我的解决方案的子文件夹,并复制了:
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll Microsoft.VisualStudio.QualityTools.UnitTestFramework.xml
应将这些文件添加到源代码管理中(即使通常忽略DLL)。
然后,我更改了Test.csproj中的引用,以引用一个新位置。
发布于 2015-09-03 05:59:47
嗯,我有一些想法,所以选择一个最适合你的需求
简单的答案应该是将DLL标记为本地复制,并在解决方案的同一文件夹中使用类似于的文件夹,并引用生成服务器中的"Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll"
我选择第一个答案,因为这似乎是使用NuGet解决所有包问题的“最佳方式”,但您使用的DLL不知道它是否值得信任。
在使用“旧”语言的系统中,如C或C++,通常需要下载源代码和运行代码所需的库,所以我不认为NuGet包是最好的解决方案。
使用第一个选项,您总是拥有相同的版本,并且可以检查文件的MD5,并确切地知道构建服务器上运行的是什么。
也许真正的最佳选择应该是6。当你使用自己的NuGet服务器来处理你的DLL时,让你的生活变得更棒、更值得信赖。
发布于 2018-02-09 17:55:31
用于在VS 2017中创建的项目。添加Nuget包Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated允许在CI上构建单元测试项目,而无需在构建服务器上安装VS:
https://stackoverflow.com/questions/30595283
复制相似问题