簡體   English   中英

更新依賴包時強制包版本更新

[英]Force package version update when dependency package is updated

問題陳述

我們有一個本地nuget商店,其中包含許多應用程序使用的組件列表。

所有這些組件總是有一個核心組件(比如說PackageB )被定義為依賴項。 從nuget圖的角度來看,我們可以說那里有許多堂兄依賴

表親依賴圖

假設核心組件PackageB具有定義為InterfaceAInterfaceC類型。

PackageA具有實現InterfaceA ClassA PackageCClassC它實現InterfaceC

PackageAPackageC都已經定義PackageB作為依賴如圖圖像上方。

作為更新的一部分,我們在InterfaceAClassA進行了一些更改。 因此,為PackageAPackageB創建了新版本,我們在應用程序中升級到這些版本。

我們沒有意識到,另一個團隊同樣對InterfaceCClassC進行了更改; 並為PackageC生成了一個新版本 - 我們的應用程序中不需要的更新。 所以我們沒有升級PackageC

沒有編譯時錯誤。 只是在測試應用程序時,我們才開始遇到以下錯誤:

“ClassC類型的VTable設置失敗”(Android項目)

根本原因的問題竟然是,當我們更新PackageB ,我們結束了較新InterfaceC ,這不再與舊版本兼容PackageC 因此,升級到最新版本的PackageC解決了這個問題。

為了避免這個問題,我希望能夠在目標項目中更新像PacakgeB這樣的核心軟件包時強制更新所有依賴軟件包。

也就是說,如果PacakgeB更新時,它會自動強制更新PacakgeAPackageC 這可能嗎?

我假設有一些規范可以指示nuget或msbuild在app-project級別處理這個問題。

您似乎需要在app.config中指定正確的版本

這是我項目中的app.config

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="XLabs.Serialization" publicKeyToken="d65109b36e5040e4" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.5782.15703" newVersion="2.0.5782.15703" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

您需要更改publicKeyToken並設置正確的版本號

暫無
暫無

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

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