我想在相同的解决方案配置中构建相同的项目两次,改变一些#define 标志来切换功能。两个二进制文件将使用不同的名称进行部署。
我知道的解决方案可以工作:
添加解决方案配置 - 但是我需要构建解决方案两次,我希望避免这种情况。将始终构建两个项目配置。
复制项目 - 但是当我只想维护不同的配置时,我有维护新项目的开销。
批量构建 - 我避免使用批量构建,因为我使用 devenv 进行本地开发和 msbuild 进行持续集成。
还有其他想法或建议吗?
我想在相同的解决方案配置中构建相同的项目两次,改变一些#define 标志来切换功能。两个二进制文件将使用不同的名称进行部署。
我知道的解决方案可以工作:
添加解决方案配置 - 但是我需要构建解决方案两次,我希望避免这种情况。将始终构建两个项目配置。
复制项目 - 但是当我只想维护不同的配置时,我有维护新项目的开销。
批量构建 - 我避免使用批量构建,因为我使用 devenv 进行本地开发和 msbuild 进行持续集成。
还有其他想法或建议吗?
只是想出了一个方法来做你所要求的。创建一个 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 事件再次构建您的项目。我使用 Debug/Release 来制作示例,但您可以轻松更改脚本以支持其他配置,或者根据其他变量决定重新构建。
请小心,因为您同时运行两个构建,因此构建错误可能更难理解。
希望这可以帮助。