【发布时间】:2015-05-05 10:16:07
【问题描述】:
我有一个大型 WCF 项目,它由许多子项目(Web 角色的网站、后端、WPF 客户端、客户端库等)构成。每个项目都有 3 个配置文件:
- app.config - 用于本地测试
- app.release.config - 带有生产服务地址
- app.test.config - 带有测试服务器的服务地址
根据当前解决方案配置(调试/发布/测试)使用构建后事件重命名这些文件。所以不同项目中的构建后事件看起来像这样(除了在 web-role 项目中它是“web.config”而不是“app.config”):
if not "Release"=="$(ConfigurationName)" goto :nocopyrelease
del "$(TargetPath).config"
copy "$(ProjectDir)\App.release.config" "$(TargetPath).config"
:nocopyrelease
if not "Test"=="$(ConfigurationName)" goto :nocopytest
del "$(TargetPath).config"
copy "$(ProjectDir)\App.test.config" "$(TargetPath).config"
:nocopytest
当我构建这些项目时,重命名是根据当前的构建配置完成的,并且一切都按预期工作,所以我确信构建事件就像现在一样正常。但是,一旦我发布到 azure 或打包其中包含 Web 角色的“Azure 云服务”,当我检查 csx-Folder 或 cspkg-Package 的内容时,重命名就不会完成。
在发布到 Azure 时,我是否可以根据所选的构建配置使用不同的配置?到目前为止,我所做的是在发布之前重命名所有项目中的配置文件。但这是一项相当烦人的任务,而且容易出错。必须有更好的方法...
我认为让它与解决方案配置和构建事件一起使用是最简单的方法,因为在测试/调试/发布之间的下拉列表中更改解决方案配置将处理所有配置重命名,如果它工作正常。
【问题讨论】:
标签: c# wcf azure azure-web-roles post-build-event