繁体   English   中英

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

[英]How to use a custom name for app.config or hard-code config values in my assembly

我已经在C#(mydll.dll)中编写了一个类库,该类库可以访问第三方dll(3rdpdll.dll)。 反过来,非.NET进程(myapp.exe)通过COM互操作消耗Mydll.dll。

Mydll.dll是.NET 4.0,但是3rdpdll.dll是使用v2.0.50727构建的,因此当我运行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属性进行硬编码,以便避免完全使用配置文件吗?

在Visual Studio 2010中,您可以使用以下方式重命名app.config文件:

项目 -> 项目属性中 ,选择构建事件选项卡,然后编辑构建后事件命令行以重命名.config文件,例如:

rename "$(TargetDir)$(TargetFileName).config" "$(TargetFileName).versionX"

我可能是错的,但我只是想,如果在.net 2.0框架中重新编译.net 4.0程序集,则存在.back向后兼容性。 然后,我认为混合模式汇编的此错误应该消失,您可能不需要此配置。

我同意的想法:

如果MyApp.exe进行了大量更新,您是否可以优先使用它重命名甚至自动生成具有匹配名称的配置文件,然后再对其进行任何.NET代码调用? 1月12日下午17:38

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM