【发布时间】:2011-11-30 23:24:33
【问题描述】:
我有一个包含 30 多个项目的 Visual Studio 解决方案。有 2 种构建配置,Debug 和 Release。十个项目文件 (.csproj) 是使用外部工具合理频繁地生成的,并且该生成的模板包括调试和发布配置。修改模板以包含其他配置并不是一个真正的选择。
所以我遇到的问题是我有一个托管在 AppFabric/IIS 中的新项目。我正在使用 Web.Config 转换来更新 Web.Config 以部署到 4 个不同的环境:开发、测试、暂存、生产。我已经使用配置管理器将这些上下文添加到特定项目中。这有效,所以我可以更新配置管理器,例如发布版本以使用项目的生产上下文。右键单击并为项目构建部署包会导致将适当的转换应用于 Web.Config。
现在我想自动化这个过程,所以我有一个 MSBuild 脚本:
<ItemGroup>
<BuildMode Include="Dev"/>
<BuildMode Include="Test"/>
<BuildMode Include="Staging"/>
<BuildMode Include="Prod"/>
</ItemGroup>
<Target Name="Build" DependsOnTargets="Package"></Target>
<!--
Build deployment package for each target environment
-->
<Target Name="Package" Outputs="%(BuildMode.Identity)">
<Message Text="Building %(BuildMode.Identity)"/>
<MSBuild Projects="..\SynchWorkflow\SynchWorkflow.csproj"
Targets="Package"
Properties="Platform=AnyCPU;Configuration=%(BuildMode.Identity);"/>
</Target>
不幸的是,这个错误是因为它正在尝试构建,例如Prod 配置不存在时 - Prod 只是 SynchWorkflow 项目的上下文。我想要做的是使用 Release 配置生成 Prod 上下文包。这可能使用 MSBuild 任务吗?我可以在 Properties 属性中为 MSBuild 任务提供额外的设置吗?
【问题讨论】:
标签: visual-studio-2010 msbuild