C# 请参考Microsoft.VisualStudio.QualityTools.UnitTestFramework进行CI构建
我已经在VS2015 RC中创建了一个C#test项目。它在本地构建,但当我尝试在我们的CI构建服务器(TeamCity)上构建时,它失败并出现错误: cs(2,17):错误CS0234:类型或命名空间名称 命名空间“Microsoft”中不存在“VisualStudio”(是否存在) 缺少程序集引用?) [……测试。csproj] cs(9,10):错误CS0246:类型或命名空间名称 找不到“TestMethod”(您是否缺少using指令或 组件参考?) [……测试。csproj] 显然,这是因为包含这些名称空间(C# 请参考Microsoft.VisualStudio.QualityTools.UnitTestFramework进行CI构建,c#,visual-studio,unit-testing,visual-studio-2015,C#,Visual Studio,Unit Testing,Visual Studio 2015,我已经在VS2015 RC中创建了一个C#test项目。它在本地构建,但当我尝试在我们的CI构建服务器(TeamCity)上构建时,它失败并出现错误: cs(2,17):错误CS0234:类型或命名空间名称 命名空间“Microsoft”中不存在“VisualStudio”(是否存在) 缺少程序集引用?) [……测试。csproj] cs(9,10):错误CS0246:类型或命名空间名称 找不到“TestMethod”(您是否缺少using指令或 组件参考?) [……测试。csproj] 显然,
Microsoft.VisualStudio.QualityTools.UnitTestFramework
)的程序集不在生成服务器上;在我的本地计算机上,它位于C:\ProgramFiles(x86)\Microsoft Visual Studio 12.0\Common7\IDE\PublicAssemblys\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
我可以将程序集复制到我的解决方案中,使其成为代码库的一部分,但手动移动文件感觉有点不雅观。我在nuget上搜索了一下,找到了我认为可以解决问题的软件包,但安装该软件包失败,原因是:
安装程序包:无法安装程序包
“Microsoft.VisualStudio.QualityTools.UnitTestFramework 11.0.50727.1”。
您正在尝试将此软件包安装到目标为的项目中
“.NETFramework,Version=v4.5.2”,但该包不包含任何
与之兼容的程序集引用或内容文件
框架
我解决这个问题的最佳选择是什么?我感到惊讶的是,在VS2015中创建一个测试项目并没有自动包含我需要的所有依赖项,尽管我可能很天真(我是一个初出茅庐的网络新手)。嗯,我有一些想法,所以选择一个最适合你需要的
在“C”或C++等“旧”语言中使用的系统,通常下载源代码和代码所需的库,所以我不认为NuGuT包是最好的解决方案。p> 使用第一个选项,您总是拥有相同的版本,可以检查文件的MD5,并确切地知道构建服务器中正在运行什么
也许真正最好的选择应该是6。当您使用自己的NuGet服务器来处理DLL时,会使您的live更加出色和可信。答案与中的选项1类似。
<HintPath>..\packages\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Reference Include="QualityTools-Fakes">
<HintPath>..\packages\Microsoft.QualityTools.Testing.Fakes.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
Microsoft没有为Microsoft.VisualStudio.QualityTools.UnitTestFramework的最新版本提供NuGet,
而是将其作为VisualStudio的一部分提供
(C:\ProgramFiles(x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblys\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
)
我创建了文件夹Microsoft.VisualStudio.QualityTools
,作为我的解决方案的子文件夹,并复制了:
Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
Microsoft.VisualStudio.QualityTools.UnitTestFramework.xml
应将这些文件添加到源代码管理中(即使DLL通常被忽略)。然后我更改了Test.csproj中的引用,以引用一个新位置。用于VS 2017中创建的项目。添加Nuget软件包Microsoft.VisualStudio.QualityTools.UnitTestFramework.Updated允许在生成服务器上不安装VS的情况下在CI上生成单元测试项目:
在IT团队要求我从开发服务器上卸载VS2013后,我试图通过CI/CD进程在开发服务器上使用MSBuild时遇到了这个问题 在我的构建输出中,有几行带有一词。这意味着构建将考虑这些文件夹作为文件可能所在的位置。其中一行如下:
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll", but it didn't exist.
我将Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll从本地计算机复制到dev服务器上的该文件夹中,错误消失了。当然,Microsoft做的是s…t工作。要解决这个问题,您需要将dll复制到一些方便的应用程序中,并从ptoject.csproj文件中引用它们
<HintPath>..\packages\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Reference Include="QualityTools-Fakes">
<HintPath>..\packages\Microsoft.QualityTools.Testing.Fakes.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
。\packages\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
..\packages\Microsoft.QualityTools.Testing.Fakes.dll
我不明白为什么当我们从VSudio添加这个文件时,它不会更新同一个文件,而没有人知道它会做什么。在Java中,只有一个文件pom.xml或build.gradle,没有其他文件。在C#中有各种各样的东西,除了混乱之外没有任何价值。到底为什么有人会记下这些?这是一个完全正确的问题。我是一个经验不足的.net开发人员,在花了相当长的时间在谷歌上搜索,但一无所获之后,我正在寻找一些关于如何改进的指导。是如此的精英主义以至于我不能这么做?真的吗?@jaimiet我也有同样的问题,在你的TeamCity代理上,你是在Linux上用Mono构建的吗?Mono不提供该库作为其发行版的一部分。如果它是Windows下的.NET,那么您可以选择在pla中使用它