2009-09-29 12 views
19

Env .: VS2008 C# projektProjekt Visual Studio: jak dołączyć odwołanie tylko do jednej konfiguracji?

Muszę zbudować moją aplikację do użytku w 2 różnych środowiskach. W jednym z tych środowisk muszę użyć zewnętrznego zestawu DLL.

Mogę izolować kod, który używa tej biblioteki DLL przy użyciu bloków #if. Ale jak warunkowo dołączyć odniesienie do biblioteki DLL w pliku projektu CS?

Edytuj: womp ma dobry punkt w swoim komentarzu. Zmieniłem w separate question: Czy przywoływana biblioteka DLL zostanie załadowana w ogóle, jeśli nigdy nie zostanie wywołana? TIA,

+2

Dlaczego nie zostawiłbyś tego w obu, wykorzystując konfigurację biblioteki DLL i unikając komplikacji? Pliki DLL nie są ładowane, chyba że jest to konieczne. Czy są problemy licencyjne z biblioteką 3rd party? – womp

+0

womp, naprawdę dobre pytanie. (Nie rozpowszechniam biblioteki DLL innej firmy, która jest instalowana na niektórych systemach przez producenta). –

Odpowiedz

24

Unload projekt i otwórz go jako .XML

Zlokalizuj znacznik punkt odniesienia i dodać atrybut Stan.

Na przykład:

<ItemGroup> 
    <Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Xml" /> 

    <Reference Include="MyUtilities.Debug" 
    Condition="'$(Configuration)'=='Debug'"/> 

</ItemGroup> 

Wskazówka ostatni odniesienie ma teraz warunek.

+2

To też była moja myśl, więc spróbowałem. W moim przypadku spowodowało to niepowodzenie we wszystkich konfiguracjach (system działał tak, jakby nie mógł znaleźć zespołu). –

+2

Tak, problem polega na tym, że IDE ignoruje rzeczy z warunkami iw tym przypadku potrzebuje tego z dowolnego powodu (intellisense, przeglądarka obiektów ...), więc będzie narzekać. Ponadto będziesz musiał uzależnić wywołania od tego zestawu, inaczej kompilator nie będzie mógł znaleźć zespołu, do którego odwołuje się kod. – Coincoin

1

Poniżej, w odnośnikach plików csproj ItemGroup pracuje w VS 2008 dla mnie: -

<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Debug' "> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\Visual Studio User Library\Debug\DRLClasses.dll</HintPath> 
</Reference> 
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Release' "> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\Visual Studio User Library\Release\DRLClasses.dll</HintPath> 
</Reference> 
+4

Możesz to uprościć, dodając tylko zmienną '$ (Konfiguracja)' bezpośrednio w HintPath: ' False .. \ .. \ .. \ .. \ Visual Library użytkownika \ $ (konfiguracja) \ DRLClasses.dll ' – awe

2

Wiem, że to stary post, ale w przypadku gdy ktoś inny znajdzie go przed ich znaleźć odpowiedź, jak zrobiłem, to w ten sposób: trzeba użyć „Wybierz” element w pliku projektu:

link

można zdefiniować zarówno referencje warunkowe i kompilacja warunkowa w jednym miejscu, dzięki czemu nie trzeba używać # jeśli jest w twoim kodzie.

Działa w SharpDevelop, a ponieważ jest to dokumentacja MS, zakładam, że działa w Visual Studio.

Powiązane problemy