5

Visual Studio'nun beklediğim gibi davranması konusunda sorun yaşıyorum. 2 yapılandırma profili oluşturdum. Bir tanesinde FOO sembolü tanımlanmış ve diğeri BAR sembolü ile tanımlanmıştır. Ve bu kodu vardır:Koşullu derleme sembolleri tanımlı değil

static class MyClass{ 
#if FOO 
    public static string const MyData="foo defined"; 
#endif 
#if BAR /*yes, I know #elif would work here too.. just trying to be simple*/ 
    public static string const MyData="bar defined"; 
#endif 
} 

ve daha sonra başka bir dosyada ben

if(MyClass.MyData=="foo defined")..... 

Eh, benim uygulamada, ben MyClass.MyData tanımlı olmadığı bir hata alıyorum. Ben #if FOO sonra #error test gibi bir şey de FOO profili ve türüne bunu varsa

Ayrıca o zaman bir yapı hatasına sahip olacaktır, ama sadece iyi inşa edeceği kaldırırsanız ve ben 'ben çalıştırmak giderken MyClass'ın MyData için bir tanım içermediği bir derleme hatası alırsınız. Ayrıca, bu bir ASP.Net Web uygulamasıdır.

Birisi koşullu derlemeyi nasıl kullanacağımı anlamama yardımcı olabilir mi? Visual Studio derleme sembolleri ile düzgün bir şekilde derler, ancak ASP.Net web sunucusu her çalıştırdığında, herhangi bir sembol olmadan yeniden derler ... Ama bu sadece bunu yapmak için herhangi bir mantıklı değil ..

Düzenleme: FOO veya BAR profilini kullanmamın önemi yoktur, bunların ikisi de MyData sembolünü gerektiği gibi tanımlamaz.

EDIT2:

Tamam, bu yeniden açısından önemlidir !!! Çözümünüzde yeni bir App_Code klasörü oluşturun ve orada bir .cs dosyası ekleyin ve ardından MyClass'ı ekleyin. Bu, boş bir projede çalışan hatayı yeniden üretecektir. Aslında App_Code içinde düzenli .cs dosyaları için sadece

O Visual Studio gibi görünüyor
#if !(FOO || BAR) 
    #error neither foo or bar defined 
#endif 

ayarlamaz koşullu derleme sembollerine aşağı basitleştirdik

ASP.NET yana
+0

Cevabımı tamamen değiştirdim ... Şunu kontrol et. –

cevap

5

geliştirme dışında kodunuzu derler çevre, kendi yapı yapılandırmasını kullanır. Web.config dosyasındaki koşullu derleme sembolünü ayarlamalısınız, buraya bakınız: Conditional Compilation in ASP.NET 2.0

+0

Yaptığım şey bu. FOO konfigürasyon profilinde, FOO sembolünü ekledim ve BAR profili için BAR – Earlz

+0

Weird sembolünü ekledim, problem başka bir yerde olmalı, doğru konfigürasyonu kullanarak yaptığınızdan emin misiniz? –

+0

evet .. Dediğim gibi, bu bir hata atmadan oluşturuyor, ancak asp.net web sitesini çalıştırdığımda bir Derleme Hatası sayfası yükleyecektir. – Earlz