我已经把头发拉了一段时间了。我正在尝试使用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
发布配置文件中没有任何内容似乎与转换有关。发布配置文件包含要发布到的文件系统位置。
这里有什么建议吗?
注意:我已经放弃并找到了一个不同的解决方案,但是如果有人有任何意见,我会将其保留。
答案 0 :(得分:0)
您可以创建一个自定义。nuspec
文件,并从中引用要包含的文件。
我的建议是将.nuspec
文件与web.config / web.release.config文件放在同一目录中,并从那里建立相对路径。
因此,如果您发布到名为/output
的目录,则可以使用类似的规则
<files>
<file src="*.config" target="\" />
<file src="publish\*.*" target="\" />
</files>
因此nuget pack nuspecPath
将成为打包项目的方式
希望这会有所帮助