對框架程序集“System.Runtime,Version=4.0.10.0”的依賴,在目前目標框架中無法解決
TFS 2013 - 建構:ASP.Net 4.5.1 網站我收到此錯誤:
warning MSB3268: The primary reference "C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5.1". To resolve this problem, either remove the reference "C:\Builds\2\MyProj\Web1_Main\bin\MyProj1.dll" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.10.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".所有項目和站點最初都是 4.0,使用 Unity 1.0.0.0。我將其升級到 4.5.2。上面錯誤中的 MyProj1 也引用了 Unity,我也將其升級到 3.5.1。
閱讀:https ://unity.codeplex.com/workitem/12756 建構伺服器已經在解決方法中指出了更新的 4.5.2。
所以我降級到 4.5.1 但仍然收到錯誤。
- 解決方案通過 Visual Studio 2013 在本地建構良好。
- 獨立類庫項目在 TFS 中建構得很好,但是當 MyProj 添加為對我的網站的引用時,它就會失敗。
有任何想法嗎?
升級時除了 TragetFramework settign 是否需要任何 web.config 更改?
由於我的項目依賴於其他項目,我不得不將我的 Unity 升級到 3.5,並且再次出現此錯誤。這一次,終於修好了。
這個幫助了我:http ://devsilos.blogspot.com/2014/10/msb3268-while-targeting-aspnet-web-site.html
解決方案我複制了建構抱怨的所有文件:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2\Facades
至
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5.2
以下是上面連結中的解釋,以防將來由於任何原因出現故障:
更深入的檢查揭示了以下有趣的事實:aspnet_compiler 出於某種原因沒有考慮駐留在 4.5 程序集的 Facade 目錄下的 .dll-s (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework \v4.5\外牆)。它只在 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5 下查看
結果整個事情都失敗了,因為 System.Threading.Tasks 和 System.Runtime .dll-s 都在 Facades 目錄下,而不是在 v4.5 中。
現在解決方案:
- 只需將缺失的 .dll-s 從 Facade 複製到 v4.5 目錄即可。
- 在 .sln 文件中將 TargetFrameworkMoniker 設置為 4.5.1。確切的語法如下:TargetFrameworkMoniker = “.NETFramework,Version%3Dv4.5.1”。
在這種情況下發生的情況是 aspnet_compiler 無法辨識所需框架的確切版本,並嘗試盡可能使用 GAC。如果 4.5 是建構機器上安裝的最高版本,我相信它應該可以工作。