【问题标题】:app.config Transformationsapp.config 转换
【发布时间】:2011-09-05 10:31:50
【问题描述】:

我非常喜欢在 Visual Studio 2010 中添加 web.config transformations。另请参阅 Scott Hanselman's recent talk at MIX2011

糟糕的是,这个功能(至少看起来)只对 Web 项目可用。

在我们的解决方案中,我们有多个 Windows 服务连接到不同的数据库,具体取决于它们的部署环境。

有没有人想出一个漂亮、整洁的方法来实现类似的“app.config 转换”功能?

注意:我们正在使用 TFS 2010 以持续集成的方式构建我们的解决方案。

【问题讨论】:

标签: visual-studio deployment slowcheetah


【解决方案1】:

如果您有多个客户端程序集并且不想复制相同的配置数据,我创建了Profigurator。它将 JSON 文件作为输入并将设置应用到 app.config 或 web.config。

写这篇文章的时候有点粗糙,但我目前正在生产系统上使用它进行部署,效果很好。

【讨论】:

    【解决方案2】:

    我写了一个不错的扩展来自动化 app.config 转换,就像内置的 Web 应用程序项目一样 Configuration Transform

    【讨论】:

    • 在我的情况下,我看到的是空文件,而不是我正在寻找的转换,例如,我的 app.cdebug.config 是(我的假设是会有标签,我可以预览更改) schemas.microsoft.com/XML-Document-Transform">
    【解决方案3】:

    我知道你已经有了答案,但今天早上我偶然发现了SlowCheetah,这是我迄今为止见过的最好的实现。还有一个blog post 让这个从 CI 服务器运行。

    【讨论】:

    • 是的,很好的发现。我的 app.config 现在会在我部署或按 F5 运行应用程序时使用适当的 SQL Server 连接字符串自动更新。很棒的发现!
    • FWIW,对 SlowCheetah 的积极开发和支持现已停止。作者敦促感兴趣的各方投票支持添加 Visual Studio 的功能。在此处查看他的博客文章:sedodream.com/2014/08/11/…
    • 感谢微软在这方面获得的票数,SlowCheetah 的开发已经恢复。 VS 2015 预览版可以在这里找到:visualstudiogallery.msdn.microsoft.com/…
    【解决方案4】:

    使用 Luke Bennett 的回答让我走上了正确的道路。我为我们found this to be the answer

    FTA(参见代码 sn-ps 链接):

    1. 添加一个指向您的 App.Config 文件的新属性 ProjectConfigFileName

    2. 为每个配置添加一个 App.Config 版本,即 App.Debug.config 要将它们嵌套在 App.Config 下,请编辑您的 csproj 文件,

    3. 在 Microsoft.CSharp.targets 导入后立即将 Microsoft.Web.Publishing.targets 导入您的 csproj 文件。

    4. 在 AfterBuild 目标中调用 TransformXml 任务。注意,BeforeBuild 和 AfterBuild 目标默认被注释掉。

    【讨论】:

      【解决方案5】:

      您可以对任何 XML 文件使用 XML 转换功能 - 我们一直都在这样做。它可以通过 MSBuild 任务获得。

      尝试将以下内容添加到您的构建脚本中:

      <UsingTask TaskName="TransformXml"
                 AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll"/>
      
      <TransformXml Source="Path\To\Your\Xml.config"
                    Transform="Path\To\Your\Xml.$(Configuration).config"
                    Destination="Path\To\Your\Output.config" />
      

      【讨论】:

      • 应该使用SlowCheetah而不是这个visualstudiogallery.msdn.microsoft.com/…
      • 这是一个非常明确的声明 - 您说它应该在没有限定原因的情况下使用,请您进一步解释一下吗?据我所知,当你按下 F5 时,SlowCheetah 是围绕在 VS 中进行转换的。这里的上下文是 F5 没用时的 CI。 SlowCheetah 可能支持 CI 场景,但它还提供了什么让这种方法自动比这个更好?我并不是说它不好,只是认为它需要证明:)
      • 当然我应该澄清一下。 SlowCheetah 由两部分组成:创建转换/预览/等的 VS UI 组件和执行所有转换的 MSBuild 任务/目标。所以VS组件只需要将SlowCheetah添加到项目中即可。从 CI 服务器/命令行执行这些操作很容易。请参阅我的博客sedodream.com/2011/12/12/…。希望清除它:)
      • 感谢您的信息,知道它支持我以前没有意识到的 CI 场景很有用(尽管现在刚刚注意到 John Laffoon 在他的回答中实际上提到了您的博客文章)。在纯粹的 CI 级别上(就像这个问题一样),SlowCheetah 是否提供了 Microsoft.Web.Publishing.Tasks.dll 之外的任何附加功能?或者,使用它的主要优势是如果你想要的话,你可以获得 VS 工具的好处?
      猜你喜欢
      • 2018-08-13
      • 2014-02-26
      • 1970-01-01
      • 2020-12-12
      • 2013-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多