2017-06-14 35 views
7

Sadece Debug'da olmasını istediğim, ancak bu özelliğin gerektirdiği dll'leri göndermek istemediğim bir özellik var. Bu mümkün mü?C# ifadesi #if DEBUG içinde değil, ancak montajda değil

Ben:

#if DEBUG 
using MyAssembly; 
#endif 

Tabii MyAssembly projesi tarafından başvuruluyor. MyAssembly.dll dosyasının bir sürüm modunda gönderilmemesini isterim. Bu başarılabilir mi? Bu konuda Koşullu ("DEBUG") yardımı kullanacak mı?

+2

'using' yönergeleri, derlemeler açısından hiçbir şey yapmaz - yalnızca ad alanlarıyla ilgilidir. Derleme başvurusunu proje dosyanızda koşullu hale getirmek isteyebilirsiniz ... kodun hiçbiri * yayınlama modunda derlemede kodlama yapmazsa da, C# derleyicisi referansı kullanmaya devam etmez farkında olmak. (Yine de kontrol etmelisiniz - ve bunu doğrulamak için referansı yine de koşullandırdım.) –

+0

Teşekkür ederiz! Geribesleme için teşekkür ederiz Jon! – Bati

cevap

8

Zorunlu olmayan başvurular genellikle derleyici tarafından otomatik olarak kaldırılır, ancak: csproj'u Condition'u PropertyGroup'a ekleyerek daha açık bir şekilde yapabilirsiniz. gibi bir şey:

<PropertyGroup Condition="'$(Configuration)' == 'Debug'"> 
    <Reference Include="YourReference" /> 
</PropertyGroup> 

(aynı zamanda bir <PackageReference> vb olabilir)

+0

Marc, "referanslar genellikle kaldırılır" dediğinizde ne demek istiyorsunuz - kodum #if DEBUG altındaysa, bu kod Sürümde yayınlanmayacaktır. Ancak meclis hala dağıtılıyor. Hala sözdizimi deniyorum .. bazı hatalar alıyorum .. – Bati

+0

@Bati IL kontrol etmek gerekir, ama gerçek referans kaldırılmalıdır; Ancak, referans olmayan öğeleri dağıtabileceğiniz için dağıtım yapılandırmasını da kontrol etmeniz gerekir. Gerçek dosyalar olmadan daha fazlasını söylemek imkansız. –

+0

Koşulun referans düğümüne eklenmesi şu şekilde oldu: Bati

5

Bir #if DEBUG bölümünde using direktifini koymak bile iyi bir sonuçtur ve ayıklama için derlenmiş zaman o yönergeyi kaldıracaktır. Bununla birlikte, bu sadece hikayenin bir kısmıdır; Hedefinizi kendi başına gerçekleştiremez. Visual Studio'daki Solution Explorer da Başvurular bölümüne sahiptir. Ayrıca, derleme için referansı kaldırmanız veya oluşturduğunuzda yine de dahil etmeniz gerekir.

Visual Studio kullanıcı arabiriminde bunu yapmanıza izin verecek hiçbir şey hatırlamıyorum, ancak Project dosyasını el ile düzenlerseniz (bir MSBuild dosyasıysa) bir şekilde mümkün olabileceğini umuyorum. Şahsen, proje dosyalarına manuel düzenlemeler gerektiren şeylerden kaçınmak için çok uğraşırım. Visual Studio, bu dosyalara sahip olmak istiyor ve siz ve Visual Studio'nun birbirlerinin değişikliklerinin üzerine yazdığı çakışmalar oluşturabilirsin.

+0

Girişiniz için teşekkür ederiz – Bati

İlgili konular