2017-08-06 39 views
0

假設我在我的項目中使用了一個NuGet包,它依賴於x.y.z的1.2.3版本。但是,我想測試NuGet包是否適用於x.y.z的1.1.1版。如何測試NuGet包是否適用於其較低版本的依賴項?

我試過用這種方法在我的項目的App.config中進行程序集綁定,將1.1.1版本放置在1.2.3所在的同一目錄中。

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="x.y.z" publicKeyToken="xxxx" culture="neutral" /> 
      <bindingRedirect oldVersion="0.0.0.0-1.2.3 newVersion="1.1.1" /> 
     </dependentAssembly> 
     </assemblyBinding> 
</runtime> 

不過,我仍然得到這個錯誤:

Could not load file or assembly 'x.y.z, Version=1.2.3, Culture=neutral, 
PublicKeyToken=xxxx' or one of its dependencies. 
The system cannot find the file specified. 

任何想法如何,我可以測試,看看是否NuGet包與一個dll較低版本的作品?

謝謝

回答

0

NuGet是一個依賴管理工具。默認情況下,將其安裝到項目中時,它將獲取任何庫的最新版本。在你的例子中,你的項目安裝了x.y.z 1.2.3版本,這意味着它不會像你試圖指出的那樣找到版本1.1.1。

要使用舊版本進行測試,第一步需要從項目中卸載當前版本的軟件包。您需要轉到Package Manager Console並在您的項目上執行命令Uninstall-Package x.y.z

Uninstall Package

一旦你做到了這一點,你需要安裝要與測試X.Y.Z的特定版本。爲此,您需要運行Install-Package x.y.z -Version 1.1.1。這將發佈到NuGet,獲取包的1.1.1版本並安裝它,現在你可以運行你的測試。請記住,NuGet存儲庫需要有1.1.1版本,否則會產生一個錯誤。請參閱項目NuGet頁面以瞭解託管和可用版本。

Install Specific Package Version

+0

由於某種原因,我無法卸載軟件包。控制檯告訴我,由於原始的NuGet包依賴於該包,因此無法卸載。 – Ashleyy

+0

你必須演奏依賴舞蹈。您需要首先卸載依賴它的軟件包,但該軟件包可能有另一個依賴於該軟件包的軟件包。因此你必須演奏舞蹈。只要繼續嘗試一次刪除一個包,你最終會得到。另外,如果您還沒有這樣做,請確保packages.config已備份或在源代碼管理中。以防萬一這是可怕的錯誤。 – virusstorm

+0

我想出了這個問題。我無法加載dll的原因是因爲我在軟件包文件夾中放入了新版本,而不是在debug文件夾中。感謝您的時間 :) – Ashleyy

相關問題