【问题标题】:How to include config transform files in web application filesystem publish output如何在 Web 应用程序文件系统发布输出中包含配置转换文件
【发布时间】:2016-09-20 19:09:18
【问题描述】:

我已经为此烦恼了一段时间了。我正在尝试使用 TeamCity 和 Octopus Deploy 实现持续集成和部署管道。我有 99% 的情况,除了一个问题。我正在使用 teamcity 的标准 msbuild 运行器,配置为使用 msbuild 版本 12。

我需要在发布的输出中包含 web.config 转换,以便可以将它们打包到 nuget 包中以进行 octopus 部署。我确实希望 msbuild 应用转换。

使用 Octopack 创建包。我正在使用内置的 teamcity nuget 打包程序。因此,我将网站发布到文件系统文件夹,然后从该文件夹中的文件创建包。但是,无论我做什么,我都无法让 msbuild 在发布中包含 web.config 转换文件(我使用 Octopus Deploy 来执行转换,所以我不希望 msbuild 执行它们)。

我已验证所有转换文件(Web.Release.config 等)都标记为“内容”。我没有将它们标记为始终复制,因为这样做会将它们复制到 bin 文件夹,而不是它们所属的根文件夹。

我已经从 msbuild 命令行中删除了 /p:Configuration= 属性,因为我已经阅读了应用转换所需的属性。我的 msbuild 参数如下所示:

/p:DeployOnBuild=true /p:PublishProfile=Deployment

发布配置文件中似乎没有任何与转换相关的内容。发布配置文件包含要发布到的文件系统位置。

这里有什么建议吗?

注意:我已经放弃并找到了一个不同的解决方案,但我将保持打开状态,以防有人提出任何意见。

【问题讨论】:

  • this answer。我相信,如果您将这些元素放入您的发布配置文件并相应地调整路径,您将能够将您的 web.environment.config 文件输出到发布输出。
  • @NightOwl888 - 似乎是一个非常侵入性的过程。我担心 Visual Studio 会被不知道发生了什么的开发人员覆盖这些更改。
  • 在很多情况下需要手动编辑 MSBuild 文件。 Visual Studio 仅支持 MSBuild 的一部分功能(包括 MSBuild 最有用的功能,即条件属性)。一般来说,Visual Studio 会忽略它没有为其构建 UI 编辑器的 XML 元素和属性(除了在顶部附近警告不要编辑的文件中)。但是,您可能希望对手动添加的部分进行注释,以便在将项目文件作为保险单签入时通过差异视图窗口轻松发现对它们的更改。
  • @NightOwl888 - 我终于放弃了,并想出了一个在章鱼部署中使用变量替换的解决方案,感谢您的帮助
  • 我也面临这个问题。我的客户已经为他们的所有项目创建了转换,目前为每个环境创建一个构建,我正在尝试整合和使用 Octopus。我现在正在寻找一个手动步骤,在创建 nuGet 包之前将配置复制到发布创建的文件夹中 - 但这似乎很痛苦

标签: asp.net-mvc msbuild teamcity octopus-deploy


【解决方案1】:

您可以创建一个自定义 .nuspec 文件并从那里引用您想要包含的文件。

我的建议是将.nuspec 文件与 web.config / web.release.config 文件放在同一目录中,并从那里设置相对路径。

因此,如果您发布到名为 /output 的目录,您可以使用这样的规则

<files>
  <file src="*.config" target="\" />
  <file src="publish\*.*" target="\" />
</files>

所以nuget pack nuspecPath 将成为打包项目的方式

NuSpec Reference

希望对你有帮助

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-21
    • 1970-01-01
    • 2015-03-11
    • 2021-04-22
    • 1970-01-01
    相关资源
    最近更新 更多