我有一个 Visual Studio 解决方案,其中包含 30 多个项目。有 2 个构建配置,分别是 Debug 和 Release。其中的十个项目文件(.csproj)会经常使用外部工具生成,用于生成的模板包括 Debug 和 Release 配置。修改这些模板以包括其他配置不太可行。
所以我面临的问题是,我有一个托管在 AppFabric/IIS 上的新项目。我使用 Web.Config 转换来更新 Web.Config,以便部署到 4 个不同的环境:Development、Test、Staging 和 Production。我已将这些上下文添加到特定项目中,使用 Configuration Manager。这样就可以更新 Configuration Manager,例如针对 Release 构建,使用 Production 上下文来管理该项目。右键单击并为该项目构建部署包,将应用适当的转换到 Web.Config 中。
现在我想自动化该过程,因此编写了一个 MSBuild 脚本:
所以我面临的问题是,我有一个托管在 AppFabric/IIS 上的新项目。我使用 Web.Config 转换来更新 Web.Config,以便部署到 4 个不同的环境:Development、Test、Staging 和 Production。我已将这些上下文添加到特定项目中,使用 Configuration Manager。这样就可以更新 Configuration Manager,例如针对 Release 构建,使用 Production 上下文来管理该项目。右键单击并为该项目构建部署包,将应用适当的转换到 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>
不幸的是,这个错误出现是因为它试图构建一个在SynchWorkflow项目中不存在的Prod配置。我想要做的是使用Release配置生成Prod上下文包。是否可以使用MSBuild任务完成?在Properties属性中提供额外的设置能否实现这一点?