我有一个vb.net解决方案,其中包含一个文件类来访问Azure文件和2个项目。在这两种情况下,我都调用包含以下代码的file类
Dim mascThis as ShareClient
... mascThis is initialized ...
If mascThis.Exists.Value then ... do something ..
在一个项目中这有效,在另一个项目中我得到消息
无法加载文件或程序集"System.Runtime.CompilerServices"。不安全,版本=4.0.4.1,文化=中性,PublicKeyToken=b03f5f7f11d50a3a'或其依赖项之一。定位的程序集的清单定义与程序集引用不匹配。(Exception from HRESULT: 0x80131040)
我以前讨论过这个问题(汇编问题),但所有项目都在相同的解决方案中,我添加了Azure.Storage.Files。通过Nuget共享12.8.0,并且只共享"File class"。项目有一个引用,其他项目没有。
我在这里错过了什么?
请检查以下情况是否属于您的情况
有时,我们会遇到解决方案的不同部分(项目)依赖于同一DLL的不同版本的情况,即;具有相同程序集名称的程序集。
误差
无法加载文件或程序集"System.Runtime.CompilerServices。不安全,Version = 4.0.4.1文化=中性,PublicKeyToken=b03f5f7f11d50a3a'或其之一依赖关系。定位的程序集的清单定义不会匹配程序集引用。(Exception from HRESULT: 0x80131040)
建议,您的项目正在寻找程序集版本4.0.4.1
个队伍工作
。通常Nuget包4.5.3包含程序集版本4.0.4.1。请检查您的解决方案中的两个项目是否可以在该程序集版本上工作,并通过在您获得错误的项目中绑定重定向将该特定版本添加为新版本(例如:4.0.4.1)。并保持旧版本的位置。
Also右键单击包引用并在其属性下将'specific version'设置为false
的例子:
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
在本例中,这种添加方式指定运行时应该在旧版本范围0.0.0.0-4.0.6.0
之间的程序集版本中使用4.0.6.0版本。Else如果不是上述情况,解决方案可能需要不同的版本。
。
右键单击项目属性,选择ApplicationConfiguration文件和App.config
在app.config文件中添加以下设置:
通过codebase配置具有相同名称的多个程序集。
一些包的示例代码说" A ":
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="A " publicKeyToken="3d67ed1f87d44c89" />
<codeBase version="3.0" href="...A.dll"/>
<codeBase version="5.0" href="...A.dll"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
iii。看看是否可以通过使用外部别名来解决这个问题。
第四。如果你的应用或它的组件引用了同一个程序集的多个版本,就会添加绑定重定向。参见启用或禁用自动生成的绑定重定向| Microsoft Docs。如果你手动设置,你需要在项目属性下禁用。可以手动在属性组的"csproj"文件中添加<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
。例:
<PropertyGroup>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<GenerateBindingRedirectsOutputType>true</GenerateBindingRedirectsOutputType>
</PropertyGroup>
引用这很有帮助。
- 所以参考
- 引用多个版本
- 加载不同版本的相同程序集- so