我可以在一个解决方案配置中构建项目的多个配置吗?

Rob*_*ter 10 msbuild configuration-management visual-studio-2010

我想在相同的解决方案配置中两次构建相同的项目,改变一些#define标志以切换功能.两个二进制文件将使用不同的名称进行部署.

我所知道的解决方案可以起作用:

  1. 添加解决方案配置 - 但我需要两次构建解决方案,我宁愿避免.两个项目配置将始终构建.

  2. 复制项目 - 但是当我只想维护不同的配置时,我有维护新项目的开销.

  3. 批量构建 - 我避免使用批量构建,因为我使用devenv进行本地开发,使用msbuild进行持续集成.

还有其他想法或建议吗?

Mar*_*nte 6

刚刚想出办法来做你要求的事情.创建一个msbuild文件(我命名为我的multiple.proj)并添加下面的脚本.

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Choose>
    <When Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
      <ItemGroup>
        <ProjectToBuild Include="$(MSBuildProjectName).csproj">
          <Properties>Configuration=Release</Properties>
        </ProjectToBuild>
      </ItemGroup>
    </When>
  </Choose>
  <Target Name="BeforeBuild">
    <Message Text="Building configuration $(Configuration)..." />
  </Target>
  <Target Name="AfterBuild">
    <MSBuild Projects="@(ProjectToBuild)"/>
  </Target>
</Project>

</type>
</this>
Run Code Online (Sandbox Code Playgroud)

在项目中导入脚本(csproj或vbproj):

<Import Project="..\multiple.proj" />
Run Code Online (Sandbox Code Playgroud)

此脚本告诉msbuild使用另一个配置作为AfterBuild事件再次构建您的项目.我使用Debug/Release来制作示例,但您可以轻松地更改脚本以支持其他配置,或者根据其他变量决定再次构建.

要小心,因为您一次运行两个构建,因此构建错误可能更难理解.

希望这可以帮助.