gpt4 book ai didi

c# - 在 app.config / 中配置任何较新程序集版本的 .NET 程序集绑定(bind)

转载 作者:行者123 更新时间:2023-11-30 18:27:02 30 4
gpt4 key购买 nike

在 C# 项目中,我使用了一个外部程序集并将其添加到项目的引用中。假设程序集名为“ABC”,位于 c:\complie-time\abc.dll 版本 1.0.0.0 的编译时>。 “复制本地”设置为 false。

因为不是复制到本地,所以要在app.config中指定组装位置。

<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,并且已知它是向后兼容的,以上将不起作用,因为 .NET 框架正在寻找版本 1.0.0.0c:\ABC-install\abc.dll 如果我把 1.0.0.0 放在那里。

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

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

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

最佳答案

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

    <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>

关于c# - 在 app.config <assemblyBinding>/<codeBase> 中配置任何较新程序集版本的 .NET 程序集绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27544918/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com