2016-11-08 60 views
0

我正在使用實體框架核心1.0.1的ASP.NET 4.6.2應用程序。該應用程序在本地生成並運行正常,但是,TFS 2015 Update 3會以破損狀態構建並部署它。至少有一個(我現在知道)所需的程序集會被舊版本覆蓋。TFS構建覆蓋使用不正確版本的程序集

System.Collections.Immutable 1.2.0。是EF要求的。但是,在將1.2.0之後的生成日誌複製到bin文件夾後,我可以看到另一個版本(1.1.37.0)被複制到bin。它從Microsoft.Net.Compilers.1.3.2包中複製並覆蓋較新的版本。

當應用程序運行時,它期望看到1.2.0,而是找到1.1.37。然後它拋出這個錯誤:

Could not load file or assembly 'System.Collections.Immutable, 
Version=1.2.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' 
or one of its dependencies. The located assembly's manifest 
definition does not match the assembly reference. 
(Exception from HRESULT: 0x80131040) 

有沒有辦法來防止這種情況?

+0

你能分享您的構建定義是什麼?你使用Nuget來安裝System.Collections.Immutable 1.2.0包嗎? –

+0

我剛發現這是一個已知問題,並已更新回覆,請檢查它是否有幫助。 –

回答

1

根據this website,這是一個已知問題,並且該問題應該在Microsoft.CodeDom.Providers.DotNetCompilerPlatform 1.0.2中可用。

http://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/

如果修復不起作用,你可以通過更新Microsoft.CodeDom.Providers.DotNetCompilerPlatform包解決這一問題,結合重定向解決方案是最簡單的解決辦法了。

<dependentAssembly> 
    <assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-1.2.0.0" newVersion="1.1.36.0" /> 
</dependentAssembly> 

其他有用的鏈接: