2011-05-03 54 views
27

我得到一堆錯誤我生成服務器上:.NET 4.0構建服務器參考組件警告MSB3644

C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \ Microsoft.Common。目標(847,9):警告MSB3644:找不到框架「.NETFramework,Version = v4.0」的引用程序集。要解決此問題,請爲此框架版本安裝SDK或Targeting Pack,或將您的應用程序重定向到您安裝了SDK或Targeting Pack的框架版本。請注意,程序集將從全局程序集緩存(GAC)中解析出來,並將用於代替引用程序集。因此,您的程序集可能無法正確定位您想要的框架。 [d:\ ADIS \汞\ AdisFeeds \緩存\ Adis.Feeds.Cache.ConsoleManager \ Adis.Feeds.Cache.ConsoleManager.csproj]

的問題是,我已經安裝的所述.NET份Windows SDK 7.1。 ...我特別小心地檢查.net 4.0參考程序集旁邊的框。

有沒有人有什麼建議,哪裏出問題了?

對於記錄,我正在使用Nant爲msbuild nant任務運行構建腳本(ver 0.86)和nant.contrib(0.85)。

更新 我剛剛跑過那個角度。我使用帶有診斷日誌記錄的msbuild在我的開發機器上編譯解決方案,然後再次在構建服務器上編譯。然後我比較了日誌。

似乎有重大差異,缺少對\ Program Files \ References Assemblies路徑的任何引用。特別是在FrameworkPathOverride中。

所以我試着將FrameworkPathOverride作爲命令行參數添加到msbuild。不幸的是,這引起了我不幸的發現,即引用程序集目錄似乎只有它們中的xml文件。因爲在那裏只有mscorlib.xml。否mscorlib.dll

這是怎麼回事?!?

+1

那麼,他們在場嗎? C:\ Program Files \ Reference Assemblies \ Microsoft \ Framework \ .NETFramework \ v4.0。注意64位操作系統的麻煩,他們也有c:\ program files(x86) – 2011-05-04 00:33:12

+0

我只是在這個角度。我使用帶有診斷日誌記錄的msbuild在我的開發機器上編譯解決方案,然後再次在構建服務器上編譯。然後我比較了日誌。 – Jero 2011-05-04 04:46:18

+0

[CI服務器上.NET 4.0生成問題]的可能重複(http://stackoverflow.com/questions/2730765/net-4-0-build-issues-on-ci-server) – 2014-03-14 11:50:50

回答

27

好吧,我找到了一個解決方案。您需要做兩件事:

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

喜歡的東西

msbuild -p:FrameworkPathOverride="C:\Program Files\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
  • 你需要做的是找到一個完整版本的引用程序集目錄的第二件事。由於Windows SDK安裝的副本和Visual Studio安裝的副本,我只是從我的開發機器上覆制了我的副本。工作正常。
  • 最後一個注意事項:這可能發生在我身上的原因首先是我們的構建服務器是一個很好的舊的Windows Server 2003之一。太舊的Windows SDK安裝來應付?

    +0

    您可能剛剛保存了一天... – 2012-09-07 08:47:13

    +0

    ...是的,你做到了!謝謝。有一臺Server 2008 R1機器,它不會讓我安裝Win 8 SDK或Visual Studio 2012 – 2012-09-07 08:51:41

    +1

    如果在WS 2008 R2中運行的.NET 4.5 Build有相同的問題。遵循您的意見並努力工作!唯一不需要的是添加命令行參數。所以只需使用引用程序集創建4.5文件夾就可以爲我工作。非常感謝! – kzfabi 2012-11-20 14:03:54

    10

    這看起來像這個問題的一個重複:.NET 4.0 build issues on CI server在任何情況下都應按照規定的方式解決。

    確保Windows 7 SDK安裝(至少).NET開發「智能感知和參考程序集」和「工具」。如果他們說他們已經安裝,但引用程序集不存在於您的磁盤上,請卸載並重新安裝。我已經在我的構建服務器上確認了修復程序。

    +1

    使用Web安裝程序從這裏http://www.microsoft。 com/en-us/download/confirmation.aspx?id = 8279以避免整個SDK的下載。 – Oliver 2014-03-13 22:23:08

    2

    爲了增加cixelsyd的回答是:

    在Windows SDK v7.1的安裝程序中的默認設置是「IntelliSense和引用程序集」是「半檢查」 - 這充分檢查變化和警告都不見了:-)

    0

    後,參照組件淘答案的網頁,通過項目廣泛尋找配置文件的天上面提到的,使用Windows 8.1 SDK t的上述建議o重新安裝一個缺失的4.5.1引用程序集,最終做到了這一點。

    在我的情況,我正試圖「不開始調試」一個新的ASP.Net核心的Web應用程序(.NET核心)創建跟隨tutorial在:https://docs.asp.net/en/latest/tutorials/first-mvc-app/start-mvc.html

    使用SDK時,我未選中一切接受參考組件。這是我發現安裝4.5.1的唯一方法,因爲其他方法會因爲我已安裝4.5.2及更高版本而失敗。

    這個頁面的榮譽終於奏效了!

    警告MSB3644:未找到框架 「.NETFramework,Version = v4.5.1」的參考程序集。要解決此問題,請爲此框架版本安裝 SDK或定位套件,或將您的 應用重定向到您安裝了SDK 或定位套件的框架版本。

    1

    這個工作對我來說,在PowerShell中運行(不使用FrameworkPathOverride):

    cp -r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\" "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0" 
    

    這是因爲4.5(或4.5.1)是一個下拉更換爲4.0

    +1

    你甚至可以使用'mklink'創建一個sym鏈接而不是複製 – Ivan 2017-12-21 20:19:06