Dot-Net

.NET 4.0 建構伺服器參考程序集警告 MSB3644 [重複]

  • May 3, 2011

我在建構伺服器上遇到了一堆錯誤:

C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(847,9):警告 MSB3644:未找到框架“.NETFramework,Version=v4.0”的參考程序集。要解決此問題,請為此框架版本安裝 SDK 或 Targeting Pack,或者將您的應用程序重新定位到已安裝 SDK 或 Targeting Pack 的框架版本。請注意,程序集將從全域程序集記憶體 (GAC) 中解析,並將用於代替引用程序集。因此,您的程序集可能無法正確定位於您想要的框架。[D:\adis\mercury\AdisFeeds\cache\Adis.Feeds.Cache.ConsoleManager\Adis.Feeds.Cache.ConsoleManager.csproj]

問題是我已經安裝了 windows SDK 7.1 的 .NET 部分。…我特別小心地選中了 .net 4.0 參考程序集旁邊的框。

有人對出了什麼問題有任何建議嗎?

作為記錄,我使用 Nant 為 msbuild nant 任務執行建構腳本(0.86 版)和 nant.contrib(0.85)。

更新 我只是從那個角度跑下來。我使用 msbuild 編譯了解決方案,並在我的開發機器上進行了診斷日誌記錄,然後在建構伺服器上再次編譯。然後我比較了日誌。

似乎顯著的區別是缺少對 \Program Files\References Assemblies 路徑的任何引用。特別是在 FrameworkPathOverride 中。

所以我嘗試將 FrameworkPathOverride 作為命令行參數添加到 msbuild。不幸的是,這只是讓我不幸地發現,參考程序集目錄中似乎只有 xml 文件。因為只有 mscorlib.xml。沒有 mscorlib.dll

到底他媽發生了什麼?!?

好的,我找到了一個可行的解決方案。你需要做兩件事:

  1. 首先將 FrameworkPathOverride 添加為命令行參數並將其指向引用程序集目錄。

就像是

 msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0"
  1. 您需要做的第二件事是找到參考程序集目錄的完整版本。由於windows SDK安裝的副本和visual studio安裝的副本,我只是從我的開發機器上複製了我的。工作正常。

最後一點:這可能首先發生在我身上的原因是我們的建構伺服器是一個不錯的舊 Windows Server 2003 版本。Windows SDK 安裝太舊無法應付?

引用自:https://stackoverflow.com/questions/5876946