我在C#(mydll.dll)中编写了一个类库,它访问第三方dll(3rdpdll.dll)。 Mydll.dll反过来通过非.NET进程(myapp.exe)通过COM互操作消耗。
Mydll.dll是.NET 4.0,但是使用v2.0.50727构建了3rdpdll.dll,因此当我运行myapp.exe时,出现以下错误:
混合模式程序集是针对版本'v2.0.50727'构建的 运行时无法在没有附加的情况下加载到4.0运行时 配置信息...
如果我在包含以下XML的myapp.exe旁边创建一个名为“myapp.exe.config”的文件,这将得到修复:
<?xml version="1.0"?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
问题是myapp.exe经常更新并包含名称中的版本信息,例如myapp.v2.063.exe。这将需要在应用程序的每次新迭代(myapp.v2.063.exe.config)中重命名配置文件 )。
我有没有办法为配置文件声明一个静态名称,例如“app.config”,这样就不需要重新命名并重新连接myapp.exe的每次新迭代?或者更好的是,我可以对mydll.dll中的useLegacyV2RuntimeActivationPolicy属性进行硬编码,以便我可以完全避免使用配置文件吗?
答案 0 :(得分:0)
在Visual Studio 2010中,您可以使用以下命令重命名app.config文件:
项目中的- &gt; 项目属性,选择构建事件标签并编辑构建后事件命令行以重命名.config文件,例如:
rename "$(TargetDir)$(TargetFileName).config" "$(TargetFileName).versionX"
答案 1 :(得分:0)
我可能错了,但只是想,如果你在.net 2.0框架中重新编译你的.net 4.0程序集,那就是.backward兼容性。然后我认为混合模式汇编的这个错误应该去,你可能不需要这个配置。
答案 2 :(得分:0)