[英]Elmah MySql Nuget Package Issue 'Could not load file or assembly'
[英]Nuget package references cause “Could not load file or assembly” ?
Nuget包解析有一個最近的原則。 有關詳細信息,請參閱NuGet如何解析包依賴項。 Microsoft圖表用於解釋:
我今天遇到的一個問題是我的一個Nuget包(稱為Package A當前版本1.2.3)最初只支持netstandard 2.0的版本,它在csproj文件中定義。
<TargetFramework>netstandard2.0</TargetFramework>
我有另一個產品,ECS Nuget包(稱為包B版1.0.0),包B需要引用包A.
關系路線是[包B 1.0.0] - > [包A 1.2.3]
此時,程序中的兩個包可以正常使用。
后來,由於.net框架的支持,我修改了原始包A nuget包並將其更改為以下內容。
<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>
包的包生成版本是1.3.2。 這時,我參考上面的兩個包,發現編譯沒問題,但我在運行時遇到錯誤。
我可以通過升級包B解決上述問題,但為什么會出現這個錯誤? 是因為使用了TargetFrameworks嗎? 我也希望大個子能指點一下。
當我比較*.deps.json
文件時,我發現了一些有用的東西。 這是第一個獲取以下json文件的場景:
"aliyun-net-sdk-core/1.3.2": {
"dependencies": {
"Serilog": "2.5.0",
"Serilog.Exceptions": "4.0.0",
"Serilog.Sinks.File": "4.0.0"
},
"runtime": {
"lib/netstandard2.0/aliyun-net-sdk-core.dll": {
"assemblyVersion": "0.0.0.0",
"fileVersion": "0.0.0.0"
}
}
}
但是,由於引用了1.3.2版本,CLR在加載程序集時找不到版本1.3.2的DLL,只有程序集版本0.0.0.0,所以CLR查找引用的1.2.3版本由原始項目,但沒有找到,所以它報告錯誤。 清楚地了解。
在我編寫項目的miss assembly版本后,我得到了正確的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.