2011-06-29 28 views
26

Mamy wiele produktów o wspólnych bibliotekach. Biblioteki te są częścią osobnego rozwiązania (więc mogą być budowane przez TFS niezależnie), ale problem jest w trakcie rozwoju, trzeba zmodyfikować wspólną bibliotekę, skompilować ją do binarnej, skopiować do wspólnej lokalizacji, skompilować rozwiązanie produktu .Visual Studio 2010 referencje warunkowe

Aby tego uniknąć, zastanawiam się, czy możliwe jest posiadanie referencji warunkowych, więc dla konfiguracji debugowania odwołałbym się do nich jako odniesień do projektu, podczas gdy w konfiguracji wydania byłyby to odniesienia binarne.

+1

Nie mam fajnego sposobu, który znam; w przeszłości używałem wielu rozwiązań ... rozwiązania "Master", które odwołują się do wszystkiego, jeśli dokonujesz poważnych zmian w architekturze, a następnie oddzielają rozwiązania projektowe, jeśli pracujesz nad pojedynczym projektem. Ogólnie rzecz biorąc, PITA. –

+0

Możesz to zrobić, modyfikując ręcznie plik '.csproj'. – SLaks

+0

Możesz to zrobić, modyfikując proces budowy. Użyj narzędzia takiego jak MsBuild. –

Odpowiedz

39

Powinieneś być w stanie to zrobić z konstrukcjami warunkowymi, bezpośrednio edytując plik projektu (VS IDE nie zrobi tego za Ciebie).

Na przykład, można zrobić coś takiego za pomocą "wybierz" elementu:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > 
    <PropertyGroup> 
     <!-- ... --> 
    </PropertyGroup> 
    <Choose> 

     <When Condition=" '$(Configuration)'=='Debug' "> 
      <ItemGroup> 
       <ProjectReference Include="..\stuff\MyStuff.csproj"> 
        <Project>{4c7bbe47-8d84-45d4-95f0-f640ba59563c}</Project> 
        <Name>MyStuff</Name> 
       </ProjectReference> 
      </ItemGroup> 
     </When> 

     <When Condition=" '$(Configuration)'=='Retail' "> 
      <ItemGroup> 
       <Reference Include="MyStuff.dll" /> 
      </ItemGroup> 
     </When> 

    </Choose> 
    <!-- Rest of Project --> 
</Project> 

MSDN ma more information about using conditional constructs.

+0

Czy te projekty również muszą być częścią rozwiązania? –

+0

Wierzę, że tak, ale w przypadku "wydania" nadal powinno być dobrze. Powinny pojawić się jako nieodnalezione, co nie ma znaczenia, ponieważ w wersji wydania nie są one w rzeczywistości przywoływane. – Matt

4

Czasami warto spojrzeć na Nuget:

NuGet

Nuget jest wolny, system zarządzania pakietami deweloper koncentruje open source dla platformy .NET zamiarem na uproszczenie procesu włączania bibliotek stron trzecich do aplikacji .NET podczas programowania.

(gdzie można byłoby się osoba trzecia w tym przypadku)

Uwaga: to nie daje referencje warunkowe, ale to łatwość uaktualniania wspólnych elementów.