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
#if !(FOO || BAR)
#error neither foo or bar defined
#endif
ayarlamaz koşullu derleme sembollerine aşağı basitleştirdik
ASP.NET yana
Cevabımı tamamen değiştirdim ... Şunu kontrol et. –