2009-09-29 31 views
19

Env .: VS2008 C# projesiVisual Studio Projesi: Yalnızca bir yapılandırma için nasıl referans eklenir?

Uygulamamı 2 farklı ortamda kullanılmak üzere oluşturmam gerekiyor. Bu ortamlardan birinde, bir 3. parti DLL derlemesi kullanmam gerekiyor.

Bu DLL'yi kullanan kodu #if bloklarını kullanarak izole edebilirim. Ancak, koşullu olarak CS proje dosyasındaki DLL'ye başvuruyu nasıl dahil edebilirim?

Düzenleme: womp yorumunda iyi bir noktaya sahiptir. separate question'a dönüştüm: Başvurulan DLL hiç çağrılmadıysa hiç yüklenmeyecek mi? TIA,

+2

Neden her ikisini de bırakmıyorsunuz, dll yapılandırmasının kullanımını temel almıyorsunuz ve karmaşık şeylerden kaçınmıyorsunuz? DLL'ler gerekli olmadıkça yüklenmez. 3. taraf dll ile lisans sorunları var mı? – womp

+0

womp, aslında çok iyi bir soru. (Ben 3. parti DLL dağıtmak değil. Bu üretici tarafından bazı sistemlerde yüklü). –

cevap

24

Boşalt proje ve referans madde etiket bulun .XML

olarak açmak ve bir Koşul niteliğini ekleyin. Örneğin

:

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

Bildirim son başvuru şimdi bir durumu var.

+2

Bu benim de fikrimdi, denedim. Benim durumumda, referansın tüm konfigürasyonda başarısız olmasına neden oldu (sistem montajı bulamadı). –

+2

Evet sorun şu ki, IDE bir şeyleri koşullarla görmezden geliyor ve bu durumda, her türlü sebepten dolayı (intellisense, object browser ...) bu yüzden şikayet edecek. Ayrıca, bu mecraya çağrı yapmak zorundasınız, aksi takdirde derleyici kodun atıfta bulunduğu montajı bulamaz. – Coincoin

1

aşağıdaki benim için vs 2008 çalışır ItemGroup csproj dosya referanslarında: -

<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

Yalnızca $ (Yapılandırma) değişkenini doğrudan HintPath'e ekleyerek basitleştirebilirsiniz: ' False .. \ .. \ .. \ .. \ Visual Studio Kullanıcı Kitaplığı \ $ (Yapılandırma) \ DRLClasses.dll ' – awe

2

Bu eski bir yazı olduğunu biliyorum, ama onlar cevap bulmak önce durumda herkesten gibi bulur Ben o da şu, yaptı: proje dosyasında "seç" öğesini kullanmak gerekir:

link

kullanmak zorunda kalmamak için, tek bir yerde koşullu başvurular ve koşullu derleme hem tanımlayabilir

# kodunuzda varsa.

SharpDevelop'ta çalışır ve MS'in belgeleri olduğundan, Visual Studio'da çalıştığını varsayar.

İlgili konular