2011-12-14 20 views
5

Uygulamam için bir miktar kayıt eklemem gerekiyor ve sürüm modunda olması gerekiyor ve günlük kodunun üretimde çalışmadığından emin olmam gerekiyor. Bu nedenle, üretime geçtiğimde günlük ifadelerinin kaldırıldığından emin olmak için #define ve #if kullanmak istiyorum.C# preprocessor yönergesini merkezi bir dosyadan ayarlayabilir miyim?

Sorun şu ki, birden çok dosyada oturum açmaya ihtiyacım var ve her dosyanın en üstünde bir #define koymak bir acı. Merkezi bir #define sahip olmanın bir yolu var mı? Böylelikle tüm dosyalardaki #define yerine tek #define'leri kaldırabilirim (yani neredeyse bir tane unuturum).

+0

Koşullu derleme üzerinden üretimde boş logger sınıfını kullanmak için bağımlılık enjeksiyonunu kullanarak daha iyi olabilirsiniz. Son test ve üretim arasında ikili sürümlerin farklı sürümlerine sahip olmak en iyi şey değildir ... –

cevap

9

Komut satırında, /define anahtarını kullanın. Visual Studio'da, proje için özellikler sayfasından "Oluştur" sekmesini seçin ve "Koşullu Derleme Sembolleri" bölümünü doldurun.

Ayrıca koşullu derleme kullanmak yerine, bunun yerine günlüğe kaydetme yöntemleri koşullu yöntemleri yapın. Bu daha hoş görünümlü bir alternatif. Debug.Assert böyle çalışır; koşullu bir yöntemdir, bu nedenle hata ayıklama önişlemcisi sembolü tanımlanmamışsa, derleyici kod oluşturmadan önce yönteme yapılan tüm çağrıları kaldırır.

konuda da benim makalesine bakın:

http://ericlippert.com/2009/09/10/whats-the-difference-between-conditional-compilation-and-the-conditional-attribute/

+0

Debug hakkında bir şeyler biliyordum.Assert, ama bu şartlı yöntemleri kendin yaratabildiğini fark etmedim. Bu çok daha iyi bir çözüm, teşekkürler! –

1

Evet, bu genellikle yapı dosyanızda veya oluşturmanızı oluşturan komut dosyasında yapılır. Komut satırı argümanlarını MSBuild olarak belirtirsiniz.

1

Dave'in cevabı eklemek için küresel koşullu derleme sembolleri de Görsel belirtilebilir.

  1. , DEBUG zaten ayıklama yapılandırmaları için varsayılan olarak açıktır (projeniz sağ tıklayın ve İstediğin semboller belirtebilirsiniz

Yapı sekmesine Özellikleri

  • Git gitmek Bu, verilen yapılandırma için zaten istediğinizi verebilir, ya da tüm konfigürasyonlar için belirli sembolleri belirtmek için üst kısımdaki "Tüm Konfigürasyonlar" ı seçin.

  • 1

    Visual Studio kullanıyor musunuz? Proje Özellikleri sayfasında, "Oluştur" sekmesinde "Koşullu derleme sembolleri" metin kutusu bulunur.

    1

    İstediğiniz her yerde günlüğe kaydetmeyi çağırın.

    (varsayılan olarak, VS 'DEBUG' tanımlar) hata ayıklama modunda programınızı oluşturun

    [Conditional ("DEBUG")] 
    public void WriteDebugMessage(...) 
    

    ile günlüğü API giriş yöntemlerini tanımlar. Bu çağrılar meclisin bir parçası olacak.

    Programınızı serbest bırakma modunda oluşturun (veya - derleme tanımından DEBUG sembolünü kaldırın). Bu çağrılar artık anlamsız no-ops'lar ve koşmayacaklar.

    İstediğiniz gibi görünüyor mu?

    İlgili konular