1

我试图找出一种方法来处理多个 app.config 文件。每个 app.config 文件用于不同的环境。

目前,我有多个 .SED 文件(每个 .SED 文件引用一个环境),它们在他们的后命令(PostInstallCmd)中执行一个 .bat 文件,该文件查找某个 app.config 并放入所需的目录中。但是,这种方法的问题是安装后会打开命令提示符,我无法弄清楚如何抑制命令提示符。

我不确定我的方式是否是处理多个 App.Config 的最佳方法。这就是为什么我把它扔在那里看看是否有更好的方法,或者是否有人对我已有的方法有解决方案。

4

1 回答 1

1

如果您将配置文件保存在单独的组件中,则可以向组件添加条件元素。

CostFinalize在标准操作 ( source )期间评估组件条件,因此您必须使用在文件成本计算之前运行的自定义操作来收集有关环境的信息。您可以使用内置的OSInfo 自定义操作预定义属性来执行此操作。

如果构建服务器上的名称不同,只需将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 是相同的。

于 2013-08-09T17:01:28.160 回答