如何在程序集中使用app.config的自定义名称或硬编码配置值

时间:2012-01-12 16:26:03

标签: c# .net dll com interop

我在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属性进行硬编码,以便我可以完全避免使用配置文件吗?

3 个答案:

答案 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)

我选择了Joe的想法:

  

如果MyApp.exe经常更新,你能不能重命名或重命名   甚至在其之前使用匹配的名称自动生成配置文件   首先调用任何.NET代码? - Joe 1月12日17:38