MEF中的DLL版本控制

编码器

我有一个使用MEF加载插件的应用程序,它工作得很好。所有插件都引用核心库并导出正确的部分,并且应用程序加载这些部分不会有任何问题。

出现的问题与插件库的各个依赖关系有关。一个示例是Ionic.Zip和Newtonsoft.Json。由于开发这些外部部件时使用了Nugget,因此不同的插件倾向于引用这些库的不同版本。该应用程序甚至可以加载自己的应用程序(对于Newtonsoft.Json)。

我已经意识到插件库正在寻找这些库的特定版本,因此在运行某些任务时会引发错误。

有没有一种方法可以在开发过程中指示插件不应绑定到库的任何特定版本,以便仅使用加载的任何内容?

这样,插件链接到哪个版本的Newtonsoft.Json或Ionic.Zip都无关紧要,它将仅使用主应用程序已加载的版本。

山迪普·辛格·拉瓦特(Sandeep Singh Rawat)

我相信您正在寻找程序集绑定重定向。

您可以通过在应用程序的app.config中添加条目来为给定的程序集创建程序集绑定重定向。以下示例将对所有版本的myAssembly的所有调用重定向到该程序集的v3.0.0.0

 <configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="myAssembly"
          publicKeyToken="32ab4ba45e0a69a1"
          culture="en-us" />
        <!-- Assembly versions can be redirected in app, 
          publisher policy, or machine configuration files. -->
        <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

您可以在此链接中找到更多信息重定向程序集版本

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python 中的版本控制

来自分类Dev

.NET项目-版本控制中应包含.dll和.pdb文件吗?

来自分类Dev

在virtualenv中控制pip版本

来自分类Dev

SailsJS中的API版本控制

来自分类Dev

Couchbase中的版本控制概念

来自分类Dev

Oak中的版本控制和版本控制管理如何工作?

来自分类Dev

用MEF拒绝错误的DLL

来自分类Dev

使用MEF拒绝错误的DLL

来自分类Dev

将.dll加载到单独的应用程序域(MEF)中

来自分类Dev

在不同的Visual Studio版本中缺少.dll

来自分类Dev

版本中未找到 EDSDK dll

来自分类Dev

dll版本中显示错误版本的虚假mscorlib

来自分类Dev

在DLL中控制代码的可能方法

来自分类Dev

实际中的REST Web服务版本控制

来自分类Dev

如何禁用phpstorm中的版本控制?

来自分类Dev

忽略Git版本控制中的父目录

来自分类Dev

Git:无法删除版本控制中的对象

来自分类Dev

版本控制中的Git子模块配置

来自分类Dev

从版本控制中检出项目失败

来自分类Dev

Docker和版本控制中的Cassandra

来自分类Dev

python中的tensorflow版本控制不匹配

来自分类Dev

Python中的Protobuf文件版本控制

来自分类Dev

实际中的REST Web服务版本控制

来自分类Dev

NuGet中的预发行版本控制

来自分类Dev

如何禁用phpstorm中的版本控制?

来自分类Dev

Git版本控制中TFS标签的替代

来自分类Dev

TFS / SQL Server中的数据版本控制

来自分类Dev

Git:无法删除版本控制中的对象

来自分类Dev

从版本控制中检出项目失败