我可以在一个解决方案配置中生成项目的多个配置?(Can I build multiple confi

2019-08-03 16:58发布

我想在同一个解决方案配置两次建立相同的项目,不同的#define一些标志来切换功能。 这两个二进制文件会以不同的名称进行部署。

我知道可以工作的解决方案:

  1. 添加解决方案配置 - 但后来我需要构建解决方案的两倍,我宁愿避免。 这两个项目的配置总是会建成。

  2. 复制项目 - 但后来我不得不保持新项目时,我只想保持一个不同的配置的开销。

  3. 批量构建 - 我避免使用批量构建,因为我同时使用devenv的地方发展和MSBuild的持续集成。

任何其他的想法或建议?

Answer 1:

只是想出一个办法做你问什么。 创建一个文件的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>

导入你的项目(或的csproj vbproj)的脚本:

<Import Project="..\multiple.proj" />

该脚本告诉的MSBuild到另一个设计为AfterBuild事件再次生成项目。 我用调试/发布,使例子,但你可以很容易地改变脚本来支持其他的配置,或是根据其他变量再次打造的决定。

要小心,因为你正在运行两个版本的一次,所以生成错误也很难理解。

希望这可以帮助。



文章来源: Can I build multiple configurations of a project within one solution configuration?