【问题标题】:Recommended way to build a .NET project with selectable configurations使用可选配置构建 .NET 项目的推荐方法
【发布时间】:2011-04-15 08:42:12
【问题描述】:

假设我有一个成功构建的 .NET 项目。现在,我需要选择性地构建到不同的环境,例如 DEV、QA 和 PROD。每个都需要自己的配置文件(例如 app.config)来包含相应的连接字符串和其他设置。

我查看了简单的预构建脚本,例如 Scott Hanselman 的 this one。它有效,但我的问题是预构建步骤修改了源代码。简单地构建项目将覆盖源文件并不必要地触发源代码控制修改。

我还可以研究 VS/MSBuild 之外的脚本,以便在部署后将配置文件放入其中,但我真的希望还有更好的方法。也许是 VS/MSBuild 中自包含的一种方式?

我对目标服务器的部署策略是灵活的。我考虑过一个安装项目,它需要在打包之前进行配置。或者,也可以安装 xcopy。

想法?

【问题讨论】:

    标签: .net deployment installation configuration-management slowcheetah


    【解决方案1】:

    更新 01/09/2012 - 我开始为这个项目使用 Team Build,并且不想在我的构建机器上安装 Windows SDK。我做了一些研究,偶然发现了SlowCheetah,这是实现此目标的方法。还有一个 blog post 用于通过 Team Build 启动并运行它。


    app.config 文件上的 Visual Studio XML 转换。扩展为 web 人员投入的内容。虽然我没有弄清楚,但以下是设置它的绝佳资源:

    您可以从this article 获取包含如何使用它的说明的 .targets 文件。请务必阅读文章末尾的更新以获取最新信息。

    您还需要来自Vishal Joshi's blog 的信息,该信息描述了如何设置项目中的所有内容。简单的事情,比如让 .config 文件在解决方案资源管理器中相互嵌套给我带来快乐!

    如果您还没有,则需要安装 .NET Framework 4.0 SDK,因为转换内容使用了那里的工具。

    这些文章包含提示和链接,可帮助您了解转换语法。看到一两个样本后就很简单了。

    祝你好运!

    【讨论】:

      【解决方案2】:

      从您的主项目中创建一个子文件夹,其中包含配置文件以及您希望部署到的每个环境的特定设置。当您构建/部署时,这些文件将被推送到 bin 文件夹或部署目标的子目录。然后,在安装包(可能是上述所有内容)中定义 MSBuild 脚本、VS 构建后行为或 Commit 处理程序:

      • 修改 app.config 以专门引用所需的子配置文件,或者
      • 将其中一个子配置复制到 app.config 正在寻找的预定义位置和名称。

      从主 app.config 或 web.config 到子文件的引用可能如下所示:

      <connectionStrings configSource="MySeperateConnStringsFile.config" />  
      <appSettings configSource="MySeperateAppSettingsFile.config" />
      

      您也可以使用自定义配置部分来做到这一点;只需确保像往常一样在主文件的 configSections 区域中设置这些部分。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-02
        • 2012-05-05
        • 1970-01-01
        • 2014-10-11
        • 2017-08-19
        相关资源
        最近更新 更多