使用 TFS 2017 BuildAgent 构建解决方案时出现错误 CS0234
Posted
技术标签:
【中文标题】使用 TFS 2017 BuildAgent 构建解决方案时出现错误 CS0234【英文标题】:Error CS0234 when building solution using TFS 2017 BuildAgent 【发布时间】:2017-07-19 14:12:17 【问题描述】:我在尝试使用 TFS 构建定义进行构建时遇到了以下问题。
执行构建时,代理会记录以下错误:
错误 CS0234:命名空间“Microsoft”中不存在类型或命名空间名称“VisualStudio”(您是否缺少程序集引用?)
错误 CS0246:找不到类型或命名空间名称“TestInitializeAttribute”(您是否缺少 using 指令或程序集引用?)
错误 CS0246:找不到类型或命名空间名称“TestCleanupAttribute”(您是否缺少 using 指令或程序集引用?)
错误 CS0246:找不到类型或命名空间名称“TestCleanup”(您是否缺少 using 指令或程序集引用?)
错误 CS0246:找不到类型或命名空间名称“TestMethodAttribute”(您是否缺少 using 指令或程序集引用?)
所以我理解这样的消息,即 buildAgent 无法找到以下 .dll
Microsoft.VisualStudio.TestTools.UnitTesting;
我已经在服务器上安装了 Visual Studio 2017 RC 和 Visual Studio 2017 Build Tools,它们运行 TFS 和 Buildagents。
我还在那个机器上安装了 .net 4.6.1。
这个 accepted answer 不是我的解决方案。
必须有某种解决方案,不包括将该 dll 复制到 git trunk 并从那里引用它。
更新
我能够在该机器上使用 Visual Studio 2017 RC 在本地构建解决方案。 但是构建代理仍然会抛出同样的错误。
【问题讨论】:
你能在 VS 2017 RC 中本地构建你的项目吗?转到您的构建代理机器并使用 msbuild 命令行手动运行您的项目,看看您会得到什么结果?另外,请在以下网站上检查错误 CS0234 和错误 CS0246 的原因,看看它们是否可以提供帮助:docs.microsoft.com/en-us/dotnet/articles/csharp/…、docs.microsoft.com/en-us/dotnet/articles/csharp/… 感谢您尝试从命令行使用 msbuild 构建它的提示。我也会检查并提供反馈 【参考方案1】:我终于想出了如何解决这个问题。
我添加了以下 nuget 包作为对我的项目的引用:
https://www.nuget.org/packages/MSTest.TestFramework/
那就是 mstestv2 框架。
之后我不得不删除对 mstestv1 框架的旧引用。
构建错误现在消失了。
更新:
如果您想让您的测试被发现,请将 MSTest TestAdapter 添加到您的项目中。
感谢Maciej 提供该信息。
【讨论】:
如果您希望您的测试可以在 Visual Studio 中被发现/运行,您还需要添加 MSTest.TestAdapter 版本 1.2.0:Install-Package MSTest.TestAdapter -Version 1.2.0跨度> 我对自定义 dll 有类似的问题。然后我删除了对 dll 的旧引用,粘贴了对同一个 dll 的新引用,它就可以工作了!【参考方案2】:我在VS 2017中把目标框架从4.7改成了4.6.1,修复了
【讨论】:
【参考方案3】:确保您没有签入包含 NuGet 包和 DLL 的 /packages 目录。我不小心将此目录检查到源代码管理中,它阻止了 NuGet 还原任务正确下载所需的 DLL
关键消息是构建日志中较早的警告:
警告 MSB3245:无法解析此引用。找不到 程序集“Microsoft.VisualStudio.TestPlatform.TestFramework, 版本=14.0.0.0,文化=中性,PublicKeyToken=b03f5f7f11d50a3a, 处理器架构=MSIL”。检查以确保程序集存在于 磁盘。如果您的代码需要此参考,您可能会得到 编译错误。
【讨论】:
以上是关于使用 TFS 2017 BuildAgent 构建解决方案时出现错误 CS0234的主要内容,如果未能解决你的问题,请参考以下文章
使用 .NET 4.6 和 ASP.NET Core 的 TFS 2017 构建定义
如何设置 TFS 2013 以使用 Visual Studio 2013 或 Visual Studio 2017 构建