我已经为此付出了一段时间。我正在尝试使用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参考
希望这能帮助