我们所有的单元测试项目(大约8个)都停止了编译,我找不到任何合理的理由。
"错误CS0234:类型或命名空间名称' VisualStudio'在命名空间中不存在' Microsoft' (你错过了一个装配参考吗?)"
在TeamCity(v2017.2.2)构建日志中,项目缺少Microsoft.VisualStudio.QualityTools.UnitTestFramework DLL,错误代码为 CS0234 和 CS0246 。我无法看到任何可能导致它的代码更改 然而,服务器重启可能会引发一些挂起的更改。
已检查的内容
项目参考配置
<Choose>
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
</ItemGroup>
</Otherwise>
</Choose>
MSBuild版本
我们在 Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin 中使用MSbuild v15.6.82.30579而不是 C:\ Windows \ Microsoft.NET \中的默认值Framework64 \ v4.0.30319 (添加到环境变量中)
任何建议都将不胜感激。如果可以帮助我,我真的不想开始向GAC添加DLL。
答案 0 :(得分:1)
如果您在服务器上使用Build Tools 2017,并且未安装Visual Studio 2017,则必须切换到MS Test v2:
https://blogs.msdn.microsoft.com/devops/2017/09/01/upgrade-to-mstest-v2/ https://www.nuget.org/packages/MSTest.TestAdapter https://www.nuget.org/packages/MSTest.TestFramework
Build Tools不支持旧的MS Test框架。
然后在Build Step的TeamCity中,您必须将您的跑步者类型更改为 Visual Studio测试,将测试引擎类型从MSTest更改为 VSTest ,并将测试引擎版本更改为 2017年VSTest
答案 1 :(得分:1)
在各个组件下安装“ VC ++ 2017版本15.7 v14.14工具集”组件,似乎默认工具集没有单元测试二进制文件。
参考文献:
Unit test files not installed by Visual Studio Build Tools 2017
答案 2 :(得分:0)
好的,这个问题似乎比单元测试更广泛。简而言之,即使从Visual Studio运行MSBuild步骤的MSbuild和Visual Studio构建(来自构建服务器)也没有使用相同的“共享”文件夹。
我必须使用几种不同的策略来整理版本和缺少常见的DLL: