在 Bamboo 上使用 MSBuild 构建解决方案时遇到问题
Posted
技术标签:
【中文标题】在 Bamboo 上使用 MSBuild 构建解决方案时遇到问题【英文标题】:Having troubles building my solution with MSBuild on Bamboo 【发布时间】:2018-07-26 13:04:28 【问题描述】:我有一个在 Visual Studio 2015 专业版 Framework - 4.6.1 中开发的 windows 应用程序。我已经使用 MStest 为这个 windows 服务编写了单元测试用例。如果我在我的机器上本地构建此应用程序,则构建成功(构建由 Visual Studio -> Build-> Build Solution 和 MSBuild 完成)。
现在我有一个没有安装 Visual Studio 2015 的虚拟机,但上面安装了 VS2017。现在我正在尝试通过 Bamboo 通过 MSBuild 构建我的应用程序。它给出了以下错误。
UnitTest1.cs(2,17): error CS0234: The type or namespace
name 'VisualStudio' does not exist in the namespace 'Microsoft' (are you
missing an assembly reference?)
[C:\Users\Administrator\bamboo-home\xml-data\build-dir\GUI-DEV-JOB1\UnitTestGUI\UnitTestGUI.csproj]
UnitTest1.cs(9,10): error CS0246: The type or namespace
name 'TestMethod' could not be found (are you missing a using directive
or an assembly reference?)
[C:\Users\Administrator\bamboo-home\xml-data\build-dir\GUI-DEV-JOB1\UnitTestGUI\UnitTestGUI.csproj]
UnitTest1.cs(9,10): error CS0246: The type or namespace
name 'TestMethodAttribute' could not be found (are you missing a using
directive or an assembly reference?)
[C:\Users\Administrator\bamboo-home\xml-data\build-dir\GUI-DEV-JOB1\UnitTestGUI\UnitTestGUI.csproj]
UnitTest1.cs(6,6): error CS0246: The type or namespace
name 'TestClass' could not be found (are you missing a using directive
or an assembly reference?)
[C:\Users\Administrator\bamboo-home\xml-data\build-dir\GUI-DEV-JOB1\UnitTestGUI\UnitTestGUI.csproj]
UnitTest1.cs(6,6): error CS0246: The type or namespace
name 'TestClassAttribute' could not be found (are you missing a using
directive or an assembly reference?)
[C:\Users\Administrator\bamboo-home\xml-data\build-dir\GUI-DEV-JOB1\UnitTestGUI\UnitTestGUI.csproj]
这些错误非常令人困惑,因为我引用了Microsoft.VisualStudio.QualityTools.UnitTestFramework
,但仍然显示这些错误。
我觉得这些错误的原因如下(可能完全错误)。
我的构建环境中没有导致此问题的 Visual Studio 2015。或
当我在我的代码中查看此特定引用的属性时,其路径显示为“C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
”。但是在我构建代码的虚拟机中没有名称为Microsoft Visual Studio 14.0
的文件夹。我怎么得到这个。是通过安装 Visual Studio 2015 吗?
谁能帮我解决这个问题,因为我被困在这里了。
【问题讨论】:
看起来您在项目中使用了 MSTest(命名空间:Microsoft.VisualStudio.TestTools
)这是一个类似的问题:***.com/questions/3402899/…
【参考方案1】:
我通过在测试项目中将引用从Microsoft.VisualStudio.QualityTools.UnitTestFramework
更改为MSTest.TestFramework
解决了这个问题。
【讨论】:
【参考方案2】:在 Bamboo 上使用 MSBuild 构建解决方案时遇到问题
就像您发现单元测试项目仍然使用 Visual Studio 2015 中的旧特定引用一样。要解决此问题,您可以使用 Visual Studio 2017 打开单元测试项目并删除旧引用 Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
,然后从 Visual Studio 2017 安装文件夹中添加:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
此外,MsTest 已作为新的 NuGet 包解决方案发布,不再与 Visual Studio 版本紧密耦合。默认情况下,新项目在 Visual Studio 2017 中使用 MsTest 2.0。它使用Microsoft.VisualStudio.TestPlatform.TestFramework
而不是Microsoft.VisualStudio.QualityTools.UnitTestFramework
。所以你也可以尝试在 VS2017 中创建一个新的 UnitTest 项目。也许更改旧测试项目的程序集引用也可以。有了新的参考 VS2017 确实发现了那些单元测试。
更多详情见:Announcing MsTest 2.0
【讨论】:
以上是关于在 Bamboo 上使用 MSBuild 构建解决方案时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章