簡體   English   中英

MSBuild maxcpucount> 1導致生成錯誤

[英]MSBuild maxcpucount > 1 Causes build errors

我正在嘗試構建大約600個項目,有些是.net 2.0,有些是3.5。 我正在使用Windows 2003企業版32位與所有最新的Windows更新。

當maxcpucount為1時構建正常。如果我試圖提高性能,則會出現引用錯誤。 當我查看錯誤發生位置的項目引用時,它們應該按順序構建。

下面我提供了一個導致構建被破壞的錯誤的示例。 不要掛在項目名稱或相關路徑上,因為我已經改變了這一點,所以我不會對我的雇主遇到麻煩。

這就像當多個核心構建解決方案時,相對項目引用無法正確解析。

"C:\SVN\MyLibrary\MyLibrary.csproj" (default target) (15) ->
   "C:\SVN\FileProcessor\FileProcessor.csproj" (default target) (17) ->
   (ResolveProjectReferences target) ->
     C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets : warning : The referenced project '..\..\Manager\Manager.csproj' does not exist.


   "C:\SVN\MyLibrary\MyLibrary.csproj" (default target) (15) ->
   "C:\SVN\FileProcessor\FileProcessor.csproj" (default target) (17) ->
   (CoreCompile target) ->
     FileProcessor.cs(18,39): error CS0234: The type or namespace name 'Manager' does not exist in the namespace 'TheNamespace' (are you missing an assembly reference?)

我沒有在解決方案文件上使用msbuild。 我正在使用通配符選擇所有csproj文件,然后將它們提供給msbuild。 對於開發,我們有多個解決方案,我們用於系統的不同組件。 95%是項目引用,唯一的二進制引用是核心實用程序庫

為了使MSBuild能夠運行多個內核/ cpus,它需要能夠事先確定所有依賴項是什么。 通常,這意味着您需要將所有項目都放在一個巨大的解決方案中,並將所有引用設置為項目引用或設置多個解決方案並將它們設置為以正確的順序構建。

聽起來您現在正在運行單個解決方案版本,因此您需要確保所有對其他項目的引用都正確設置為項目引用,而不是文件路徑引用。

我還沒有找到一個用GUI檢查這個的好方法,所以你可能必須卸載並編輯一個不在multicpu中構建的項目文件來查看xml。

項目參考應如下所示:


<ProjectReference Include="..\..\Manager\Manager.csproj">
      <Project>{C0F60D74-3EF9-4B49-9563-66E70D0DDF43}</Project>
      <Name>Manager</Name>
</ProjectReference>

和文件路徑引用如下所示:


<Reference Include="Manager.dll, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e79aa50eb4f67b0c, processorArchitecture=MSIL">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>....\Manager\Manager.dll</HintPath>
</Reference>

看起來你至少有一些你的參考設置正確,因為你的錯誤信息至少有一個呼叫到另一個項目,所以你不需要更新一切,只需檢查給你的夫婦問題。

我可能會很晚,你可能已經解決了這個問題。 但我遇到了同樣的錯誤,發現這是由於我的一個項目的路徑長度太大。 請看這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM