簡體   English   中英

項目參考屬性-版本號

[英]Project reference properties - Version number

我有一個Visual Studio項目,該項目引用一個我也創建的程序集。 下面是該項目中我的裝配引用的屬性的屏幕截圖。 當我將程序集版本更新為1.1.0.0 ,我的項目失敗,並且我認為此屬性是問題。

由於Version屬性表示1.0.0.0 ,這是否意味着它將始終尋找版本為1.0.0.0 而將我的版本增加到1.1.0.0會導致我的項目根本看不到程序集嗎?

版本:1.0.0.0

您有2個版本的強命名程序集。 根據設計行為,針對其他版本的程序集進行編譯的其他項目無法加載具有不同版本的程序集。 原因是版本更改表示API更改。 否則,它將使用相同版本進行就地更新-因此,較舊的代碼可能無法與較新的DLL一起正常運行。

選項:

  • 如果沒有API更改-請勿更改程序集的版本。 這意味着您可以棄用方法,但不能添加/刪除方法/類或更改行為。
  • 如果您根據該程序集控制所有項目,請使用新的參考重新生成所有項目,並停止支持舊版本(如果可能)。
  • 在設置中提供發布者政策 ,以將舊版本的請求重定向到新版本。 假設您的新版本確實與舊版本向后兼容。
  • 在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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM