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



我已经为此付出了一段时间。我正在尝试使用TeamCity和OctopusDeploy实现一个持续的集成和部署管道。除了一个问题,我99%都在那里。我使用的是teamcity的标准msbuild runner,配置为使用msbuild的版本12。

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

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

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

正如我所读到的,我已经从msbuild命令行中删除了/p:Configuration=属性,这是应用转换所必需的。我的msbuild参数如下:

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

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

这里有什么建议吗?

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

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

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

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

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

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

NuSpec参考

希望这能帮助

最新更新