【问题标题】:How to use the final {project}.exe.config file when creating a setup project创建安装项目时如何使用最终的 {project}.exe.config 文件
【发布时间】:2011-06-29 14:24:54
【问题描述】:

我创建了一个控制台应用程序 (blah.exe),其中包含用于开发和生产的特定 app.config。它们被命名为dev_app.configprod_app.config。我在我的 csproj 文件* 中连接了一个AfterBuild 目标,它将正确的配置文件作为blah.exe.config 复制到bin 目录。

我还为此控制台应用程序创建了一个安装项目,但遇到了一个小问题。似乎安装项目使用了项目目录中的实际app.config,而不是最终的blah.exe.config(位于 bin 目录中)。

|--Bin
|  |--Debug
|     |--Blah.exe.config <--- I want the setup project to use this file
|--app.config <--- Setup project uses this file at the moment
|--dev_app.config
|--prod_app.config

如何强制安装项目使用 bin 文件夹中生成的最终配置文件,而不是实际的 app.config 文件?

附加信息:

我当前的解决方案包括添加另一个 AfterBuild 命令,它会覆盖实际的 app.config 文件。我不喜欢这种方法,因为它迫使我拥有一个我不需要的附加文件。此外,自从我对 app.config 文件进行了更改,该文件在构建时被覆盖,因此拥有此文件已经让我有些悲伤。问题是关于如何让安装项目使用 bin 文件夹中的最终配置文件,NOT 如何管理配置或创建配置文件的方法。

*改编自Deploy an app.config based on build configuration

【问题讨论】:

  • 您是否使用 DEBUG 版本进行开发,发布版本用于生产?如果是这样,您可以看看使用#if DEBUG msdn.microsoft.com/en-us/library/4y6tbswk.aspx 并可能基于使用msdn.microsoft.com/en-us/library/ms223161.aspx 加载不同的配置文件
  • @astander,是的,dev_app.config 用于调试,prod_app.config 用于发布。
  • 不知道你为什么要这样做。创建适合部署的基本 .config 文件。只为调试配置创建一个特殊的。部署发布版本。
  • @astander - 请澄清一下,我将在哪里实施您的建议。在我的控制台应用程序中?如果是这样,那对我来说没有意义,因为正确的文件已复制到我的 bin 文件夹中。
  • 假设您关心 appSettings 值,另一种选择是使用“file”属性来覆盖调试方案的设置。 。然后在调试文件夹中创建您自己的 custom.config 文件以根据需要覆盖值。

标签: c# visual-studio-2010 installation setup-project


【解决方案1】:

我一直在使用完全相同的场景,但我使用的是 BeforeBuild 而不是 AfterBuild,它一直都很好。我一直在 web 和 windows 项目上这样做。下面是我正在使用的代码。

  <Target Name="BeforeBuild">
    <ItemGroup>
      <ConfigSourceFiles Include="Web.$(Configuration).config" />
      <ConfigDestinationFiles Include="Web.config" />
    </ItemGroup>
    <Copy SourceFiles="@(ConfigSourceFiles)" DestinationFiles="@(ConfigDestinationFiles)" />
  </Target>

希望这会有所帮助。

【讨论】:

  • 使用 BeforeBuild 有什么好处?如果没有区别,这就是我正在做的atm ...
  • 这让我很开心。这是我找到的最佳解决方案。谢谢
  • 这个sn-p对我创建windows服务设置很有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多