如何在Web应用程序文件系统发布输出中包含配置转换文件

时间:2016-05-23 19:19:03

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

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

我需要在已发布的输出中包含web.config转换,以便将它们打包到用于章鱼部署的nuget包中。我希望msbuild应用转换。

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

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

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

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

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

这里有什么建议吗?

注意:我已经放弃并找到了一个不同的解决方案,但是如果有人有任何意见,我会将其保留。

1 个答案:

答案 0 :(得分:0)

您可以创建一个自定义。nuspec文件,并从中引用要包含的文件。

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

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

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

因此nuget pack nuspecPath将成为打包项目的方式

NuSpec Reference

希望这会有所帮助