2013-06-05 54 views
1

我有一個Visual Studio項目引用我也創建的程序集。以下是項目中我的程序集引用的屬性的屏幕截圖。當我更新我的程序集版本到1.1.0.0時,我的項目失敗了,我認爲這個屬性是問題。項目引用屬性 - 版本號

由於Version屬性表示1.0.0.0,這是否意味着它總是會查找我的程序集版本爲1.0.0.0?並且將我的版本增加到1.1.0.0將導致我的項目根本看不到該程序集?

Version: 1.0.0.0

回答

0

你有2個版本的強命名程序集的。對於其他項目的設計行爲,如果針對此類程序集的一個版本進行編譯而無法加載具有不同版本的程序集。原因是版本更改表示API更改。否則,它將以相同版本進行就地更新 - 因此較舊的代碼可能無法使用較新的DLL正確運行。

選項:

  • 如果沒有API的改變 - 不改變組件的版本。這意味着您可能會棄用方法,但不會添加/刪除方法/類或更改行爲。
  • 如果您控制取決於該程序集的所有項目 - 用新參考重建所有項目並停止支持舊版本(如果可能)。
  • 在設置中提供publisher policy以將舊版本的請求重定向到新版本。這假設你的新版本真的向後兼容舊版本。
  • 在GAC中安裝所有版本,或者通過在每個可執行文件旁邊放置正確的文件,確保應用程序獲得正確版本的程序集。當你不控制程序集的所有用戶並且API有重大變化時,這幾乎只是一種方法。

備註:根據所討論的程序集是用於內部(您控制所有使用程序集的項目)還是外部使用,您可能需要做更多的工作來確保向後兼容性和適當的棄用策略。

出版商政策樣本:

<configuration> 
    <runtime> 
     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="myAssembly" 
          publicKeyToken="32ab4ba45e0a69a1" 
          culture="en-us" /> 
     <!-- Redirecting to version 2.0.0.0 of the assembly. --> 
     <bindingRedirect oldVersion="1.0.0.0" 
          newVersion="2.0.0.0"/> 
     </dependentAssembly> 
     </assemblyBinding> 
    </runtime> 
</configuration> 
:從上面的文章鏈接