2017-05-24 95 views
5

我正在嘗試爲使用Fakes庫進行單元測試的項目設置自動構建和單元測試。該項目在我的Windows 10 PC(VS 2017企業版已安裝)上編譯和測試,但使用相同的命令編譯構建服務器上的項目(也包括VS 2017 Enterprise的Windows 10)會給出不存在的錯誤。確切的錯誤是這樣的:MSBuild 15 - 命名空間中不存在類型或命名空間'Fakes'

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

我有同樣的問題,但我在構建服務器上使用MS Build Tools 2017。比msbuild的路徑是c:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ BuildTools \ MSBuild \ 15.0 \ Bin – McMlok

回答

4

我有一些解決方法,但它並不優雅。

如果有Fakes文件夾,則需要檢查路徑C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0。如果不是,則需要安裝TestTools工作負載或從其他機器複製。

接下來你需要檢查C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Microsoft.Common.Targets\ImportAfter如果有文件Microsoft.QualityTools.Testing.Fakes.ImportAfter.targets如果不是從另一臺機器複製它。在這個文件中是包含假目標的代碼來構建過程。

最後,您需要檢查您是否在GAC或MSBuild找到它的其他位置安裝了程序集Microsoft.QualityTools.Testing.Fakes.dll

這是我在MS Build Tools 2017的構建機上完成的,現在構建生成假貨組件。

+0

非常感謝!但是在構建工具機器上找出這個路徑有點難。我的答案也增加了。 – zionyx

4

爲了擴展@ McMlok的答案,我將包括我所做的。

  • 來源:我的本地VS2017 Premium更新1開發機器。
  • 目標:VS2017構建工具虛擬機。

複製假貨文件夾:

  • 從來源: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

現在構建的罰款。謝謝麥克莫克。

相關問題