gpt4 book ai didi

visual-studio-2010 - 针对项目上下文构建的 VS 2010 解决方案配置

转载 作者:行者123 更新时间:2023-12-02 00:27:29 26 4
gpt4 key购买 nike

我有一个包含 30 多个项目的 Visual Studio 解决方案。有 2 个构建配置,Debug 和 Release。十个项目文件 (.csproj) 是使用外部工具合理频繁地生成的,该生成的模板包括调试和发布配置。修改模板以包含其他配置并不是真正的选择。

所以我遇到的问题是我有一个托管在 AppFabric/IIS 中的新项目。我正在使用 Web.Config 转换来更新 Web.Config 以部署到 4 个不同的环境:开发、测试、登台、生产。我已使用配置管理器将这些上下文添加到特定项目。这行得通,所以我可以更新配置管理器,例如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>

不幸的是,这个错误是因为它正在尝试构建例如Prod 配置(当它不存在时)- Prod 只是 SynchWorkflow 项目的上下文。我想要做的是使用 Release 配置生成 Prod 上下文包。是否可以使用 MSBuild 任务?我可以在 Properties 属性中为 MSBuild 任务提供额外的设置以允许这样做吗?

最佳答案

我为每个环境添加了新的解决方案配置(没有添加新的项目配置),然后使用 Configuration Manager 将相关项目的上下文设置为发布。不幸的是,这不起作用,因为 MSBuild 任务是针对项目文件而不是解决方案构建的。使用 Julien Hoarau's SO answer 解决.添加新的解决方案配置是正确的方法,但链接的答案为我关闭了循环。构建脚本已更新为以下内容:

  <ItemGroup>
<BuildMode Include="Development"/>
<BuildMode Include="Test"/>
<BuildMode Include="Staging"/>
<BuildMode Include="Production"/>
</ItemGroup>
<PropertyGroup>
<PackageLocation>$(MSBuildProjectDirectory)</PackageLocation>
</PropertyGroup>

<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.sln"
Properties="Platform=Any CPU;
Configuration=%(BuildMode.Identity);
DeployOnBuild=true;
DeployTarget=Package;
PackageLocation=$(PackageLocation)\SynchWorkflow.%(BuildMode.Identity)Package.zip;"/>
</Target>

该脚本根据解决方案文件构建并为每个目标环境生成正确的包。出于示例脚本的目的,我在 MSBuildProjectDirectory 中创建包,这有点次优。

关于visual-studio-2010 - 针对项目上下文构建的 VS 2010 解决方案配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334475/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com