2012-12-07 13 views
8

Chciałbym zbudować ten sam projekt dwa razy w tej samej konfiguracji rozwiązania, zmieniając niektóre flagi #define, aby przełączać funkcje. Oba pliki binarne będą wdrażane pod różnymi nazwami.Czy mogę utworzyć wiele konfiguracji projektu w ramach jednej konfiguracji rozwiązania?

Rozwiązania, które wiem, że działa:

  1. Dodaj konfigurację rozwiązanie - Ale będę wtedy trzeba zbudować rozwiązanie dwukrotnie, których wolałbym uniknąć. Obie konfiguracje projektów będą zawsze budowane.

  2. Skopiuj projekt - Ale potem mam narzut utrzymania nowego projektu, gdy chcę tylko zachować inną konfigurację.

  3. Kompilacja wsadowa - unikam stosowania kompilacji wsadowej, ponieważ używam zarówno devenv do lokalnego rozwoju, jak i msbuild do ciągłej integracji.

Jakieś inne pomysły lub sugestie?

Odpowiedz

5

Właśnie wymyśliłem sposób na zrobienie tego, o co prosiłeś. Utwórz jeden plik msbuild (nazwałem mine multiple.proj) i dodaj poniższy skrypt.

<?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> 

Importuj skrypt na projekty (csproj lub vbproj):

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

Ten skrypt mówi msbuild zbudować ponownie swój projec t z inną konfiguracją jako zdarzenie AfterBuild. Użyłem Debug/Release, aby zrobić przykład, ale możesz łatwo zmienić skrypt, aby obsługiwał inne konfiguracje, lub podjąć decyzję o ponownym zbudowaniu na podstawie innych zmiennych.

Uważaj, ponieważ pracujesz na dwóch kompozycjach jednocześnie, więc błędy kompilacji mogą być trudniejsze do zrozumienia.

Mam nadzieję, że to pomoże.

+0

To wygląda na miłe podejście - będę musiał go obrócić. –