我正在试图找出一种处理多个app.config文件的方法。每个app.config文件用于不同的环境。
目前,我有多个.SED文件(每个.SED文件引用一个环境),它们在后命令(PostInstallCmd)中执行.bat文件,查找某个app.config并放入所需的目录。但是,此方法的问题是安装后命令提示符打开,我无法弄清楚如何取消命令提示符。
我不确定我的方式是否是处理多个App.Config的最佳方法。这就是为什么我把它扔到那里看看是否有更好的方法,或者是否有人对我已有的方法有解决方案。
答案 0 :(得分:1)
如果将配置文件保存在单独的组件中,则可以向组件添加条件元素。
在CostFinalize
标准操作(source)期间评估组件条件,因此您必须使用在文件成本核算之前运行的自定义操作来收集有关环境的信息。您可以使用内置的OSInfo custom actions或predefined properties来执行此操作。
如果构建服务器上的名称不同,只需在所有配置文件中将File/@Name
属性设置为相同。不幸的是,这将引发ICE30,但如果条件相互排斥,你可以放心地忽略它。
你的xml看起来像是:
<Component Guid="PUT-GUID-HERE">
<Condition>VersionNT = 602</Condition>
<File Name="app.config" Source="config1.config" />
</Component>
<Component Guid="PUT-GUID-HERE">
<Condition>NOT VersionNT = 602</Condition>
<File Name="app.config" Source="config2.config" />
</Component>
请注意,您必须指定组件guid,因为它们具有相同的目标路径。自动生成的guid对于两者都是相同的。