我正在尝试为一个项目设置自动构建和单元测试,该项目使用Fakes库进行单元测试。该项目在我的Windows 10 PC(安装了VS 2017 Enterprise)上构建和测试很好,但是使用相同的命令在构建服务器(也是VS 2017 Enterprise的Windows 10)上编译项目会产生关于Fakes not existing的几个错误。确切的错误如下所示:
XControllerTests.cs(10,20): error CS0234: The type or namespace 'Fakes' does not exist in the namespace 'System.Data.Common' (are you missing an assembly reference?) [C:\Runner\builds\xxx\XTests.csproj]
从我的研究中,这是由使用旧版本的MSBuild造成的,但是我检查了服务器,并确认它有最新版本&已安装Visual Studio的更新。我还确认构建脚本使用的是正确版本的MSBuild.exe,即c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\MSBuild.exe
。在我的桌面上使用此版本正确编译项目。
为什么构建不能在(相同的设置)构建服务器上运行?
答案 0 :(得分:7)
为了扩展@McMlok上面的答案,我将包括我所做的。
复制伪造文件夹:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\
c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\Microsoft\VisualStudio\v15.0\
复制 Microsoft.QualityTools.Testing.Fakes.ImportAfter.targets 文件:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Microsoft.Common.targets\ImportAfter\
c:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Microsoft.Common.Targets\ImportAfter\
复制 Microsoft.QualityTools.Testing.Fakes.dll 文件:
c:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\PublicAssemblies\
GAC
/ %windir%\Microsoft.NET\assembly
现在建立好。谢谢McMlok。
答案 1 :(得分:4)
我有一些解决方法,但它并不优雅。
如果有C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0
文件夹,则需要检查路径Fakes
。如果不是,则需要安装TestTools工作负载或从其他计算机进行复制。
接下来,您需要检查C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Microsoft.Common.Targets\ImportAfter
是否有文件Microsoft.QualityTools.Testing.Fakes.ImportAfter.targets
,如果没有从其他计算机复制它。在这个文件中是用于包括伪造目标以构建过程的代码。
最后,您需要检查GAC中是否有汇编Microsoft.QualityTools.Testing.Fakes.dll
或MSBuild找到它的其他位置。
我在我的构建机器上使用MS Build Tools 2017进行了操作,现在构建了生成假装配件。