[英]Force package version update when dependency package is updated
我們有一個本地nuget商店,其中包含許多應用程序使用的組件列表。
所有這些組件總是有一個核心組件(比如說PackageB
)被定義為依賴項。 從nuget圖的角度來看,我們可以說那里有許多堂兄依賴 。
假設核心組件PackageB
具有定義為InterfaceA
和InterfaceC
類型。
PackageA
具有實現InterfaceA
ClassA
。 PackageC
有ClassC
它實現InterfaceC
。
PackageA
和PackageC
都已經定義PackageB
作為依賴如圖圖像上方。
作為更新的一部分,我們在InterfaceA
和ClassA
進行了一些更改。 因此,為PackageA
和PackageB
創建了新版本,我們在應用程序中升級到這些版本。
我們沒有意識到,另一個團隊同樣對InterfaceC
, ClassC
進行了更改; 並為PackageC
生成了一個新版本 - 我們的應用程序中不需要的更新。 所以我們沒有升級PackageC
。
沒有編譯時錯誤。 只是在測試應用程序時,我們才開始遇到以下錯誤:
“ClassC類型的VTable設置失敗”(Android項目)
根本原因的問題竟然是,當我們更新PackageB
,我們結束了較新InterfaceC
,這不再與舊版本兼容PackageC
。 因此,升級到最新版本的PackageC
解決了這個問題。
為了避免這個問題,我希望能夠在目標項目中更新像PacakgeB
這樣的核心軟件包時強制更新所有依賴軟件包。
也就是說,如果PacakgeB
更新時,它會自動強制更新PacakgeA
和PackageC
。 這可能嗎?
我假設有一些規范可以指示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.