首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在.NET <assemblyBinding>/<codeBase>中任何较新的程序集版本的app.config程序集绑定配置

在.NET <assemblyBinding>/<codeBase>中任何较新的程序集版本的app.config程序集绑定配置
EN

Stack Overflow用户
提问于 2014-12-18 10:56:46
回答 1查看 3.4K关注 0票数 5

在C#项目中,我使用外部程序集并将其添加到项目的引用中。假设程序集名为"ABC“,位于编译时 of 1.0.0.0。“复制本地”设置为false。

因为它不是本地复制的,所以必须在app.config中指定程序集位置。

代码语言:javascript
复制
<runtime>
 <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="ABC"  culture="neutral" publicKeyToken="xyz"/>
    <codeBase version="????" href="FILE://c:/ABC-install/abc.dll"/>
  </dependentAssembly>
 </assemblyBinding>
</runtime>

ABC程序集由ABC应用程序安装提供。因此,在运行时,dll位于不同位置的c:\ABC-install\abc.dll.。

问题是:我应该在codeBase版本中添加什么?

如果用户安装一个较新版本的ABC表示1.1.0.0,并且已知它是向后兼容的,那么上面的内容将无法工作,因为如果我将1.0.0.0放在那里,.NET框架将在那里寻找1.0.0.0版本。

条件是编译时我们不知道c:\ABC-install中的版本号是什么。我们只知道它是向后兼容的。该项目应该能够与ABC程序集的所有版本一起运行。

如何配置app.config以允许外部程序集的较新版本绑定,但在编译时不知道运行时版本,而在编译时项目是基于参考设置中的1.0.0.0 dll构建的?

编辑: codeBase版本?清楚地显示问题。

EN

回答 1

Stack Overflow用户

发布于 2014-12-18 11:05:57

示例片段取自标准(我相信visual生成了web.config ),使用bindingRedirect部件。

代码语言:javascript
复制
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
            <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
        </dependentAssembly>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27544918

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档