加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

microsoft.build – 以编程方式修改程序集绑定

发布时间:2020-12-14 02:53:51 所属栏目:Windows 来源:网络整理
导读:我有一个问题与 Microsoft.Build.BuildEngine一起工作,它应该修复我的.exe.config文件修改以添加以下内容. ?xml version ="1.0"?configuration runtime assemblyBinding xmlns="urnchemas-microsoft-com:asm.v1" dependentAssembly assemblyIdentity name="M
我有一个问题与 Microsoft.Build.BuildEngine一起工作,它应该修复我的.exe.config文件修改以添加以下内容.

<?xml version ="1.0"?>
<configuration>
        <runtime>
           <assemblyBinding xmlns="urnchemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Build.Framework" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="3.5.0.0"/>
            </dependentAssembly>
                <assemblyIdentity name="Microsoft.Build.Engine" publicKeyToken="b03f5f7f11d50a3a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-99.9.9.9" newVersion="3.5.0.0"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>
</configuration>

我的问题是,我无法修改文件,我必须通过代码修复它,我认为这应该是可能的,对吧?

但是如何?,如何修改我的应用程序,使其运行就好像在配置文件上进行了上述更改一样?

解决方法

我正在努力解决类似的问题.关键是使用 AppDomain.AssemblyResolve事件.这是我的代码的样子:

public void LoadStuff(string assemblyFile)
    {
        AppDomain.CurrentDomain.AssemblyResolve += 
            new ResolveEventHandler(CurrentDomain_AssemblyResolve);
        var assembly = Assembly.LoadFrom(assemblyFile);

        // Now load a bunch of types from the assembly...
    }

    Assembly CurrentDomain_AssemblyResolve(object sender,ResolveEventArgs args)
    {
        var name = new AssemblyName(args.Name);
        if (name.Name == "FooLibrary")
        {
            return typeof(FooClass).Assembly;
        }
        return null;
    }

这完全忽略了版本号,并将已加载的库替换为名为“FooLibrary”的任何库引用.如果您想要更具限制性,可以使用AssemblyName类的其他属性. FooClass可以是FooLibrary程序集中的任何类.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读