使用TFS 2017 BuildAgent构建解决方案时出现错误CS0234

17
我遇到了以下问题,在尝试使用TFS构建定义进行构建时。
执行构建时,代理记录以下错误:
错误CS0234:名称空间“Microsoft”中不存在类型或命名空间名为“VisualStudio”(是否缺少程序集引用?) 错误CS0246:找不到类型或命名空间名称为“TestInitializeAttribute”(是否缺少using指令或程序集引用?) 错误CS0246:找不到类型或命名空间名称为“TestCleanupAttribute”(是否缺少using指令或程序集引用?) 错误CS0246:找不到类型或命名空间名称为“TestCleanup”(是否缺少using指令或程序集引用?) 错误CS0246:找不到类型或命名空间名称为“TestMethodAttribute”(是否缺少using指令或程序集引用?)
因此,我理解消息的意思是,buildAgent无法找到以下.dll文件。

Microsoft.VisualStudio.TestTools.UnitTesting;

我已经在运行TFS和Buildagents的服务器上安装了Visual Studio 2017 RC和Visual Studio 2017 Build Tools。我还在该机器上安装了.net 4.6.1。
这个被接受的答案对我来说不是一个解决方案。
必须有某种解决方案,不需要将该dll复制到git主干中并从那里引用它。
更新
我能够在该机器上使用Visual Studio 2017 RC本地构建解决方案。但是构建代理仍然会抛出相同的错误。

1
你能在VS 2017 RC中本地构建项目吗?前往您的构建代理机器并使用msbuild命令行手动运行项目以查看结果。此外,请检查以下网站上关于Error CS0234和Error CS0246的原因,看看它们是否有所帮助:https://learn.microsoft.com/en-us/dotnet/articles/csharp/language-reference/compiler-messages/cs0234,https://learn.microsoft.com/en-us/dotnet/articles/csharp/language-reference/compiler-messages/cs0246 - Cece Dong - MSFT
谢谢你的提示,我会尝试使用命令行中的msbuild进行构建。我也会检查并反馈结果。 - Tobias Theel
3个回答

33

我最终找到了解决这个问题的方法。

我将以下NuGet软件包添加为项目的参考:

https://www.nuget.org/packages/MSTest.TestFramework/

那就是mstestv2框架。

之后,我必须删除对mstestv1框架的旧引用。

现在构建错误已经消失了。

更新:

如果您想让测试可发现,请将MSTest TestAdapter添加到您的项目中。

感谢Maciej提供的信息。


4
如果你希望在 Visual Studio 中发现并运行你的测试,你需要添加 MSTest.TestAdapter 1.2.0 版本:Install-Package MSTest.TestAdapter -Version 1.2.0。 - Maciej
我也遇到了一个自定义dll的类似问题。后来我删除了旧的dll引用,粘贴了新的dll引用,问题解决了! - Rekshino

3

我在VS 2017中将目标框架从4.7改为4.6.1,问题得到解决。


2

请确保您没有将包含NuGet软件包和DLL的/packages目录提交到源代码控制中。我曾经误将该目录提交,并阻止了NuGet还原任务正确下载所需的DLL文件。

重要提示是构建日志早期的警告消息:

警告 MSB3245: 无法解析此引用。找不到程序集“Microsoft.VisualStudio.TestPlatform.TestFramework,Version=14.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a,processorArchitecture=MSIL”。请确保磁盘上存在该程序集。如果您的代码需要此引用,则可能会出现编译错误。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接