2009-06-02 15 views
5

SampleNamespace.Tools.Sample ad alanına sahip bir .NET 3.5 C# projem var. Ben şu uyarıyı almak projeme "Samplenamespace.Utils.Example" adlı bir derleme eklersenizBaşvuru Adı örneği CLS Uyumlu değil

:

tanımlayıcısı 'Samplenamespace' durumunda sadece farklı CLS uyumlu

değil

Samplenamespace'daki küçük harf 'n' not alın.

Şu an projemde referans montajını kullanmıyorum bile. Sadece referans olarak eklemek uyarıya sebep olur.

Derleyici, umuma açık bir şekilde, genel derslerimdeki derlemeye herhangi bir başvuru göndermediğimi düşünerek bu konuda şikayette bulunuyor?

Herhangi bir çözüm var mı?

cevap

7

Tüm .NET dillerinin büyük/küçük harf duyarlı olması (örneğin VB), bu gibi karışık ad alanlarınız olduğunda, yalnızca (uyarının metnini kullanmak için), kodunuzu diğer geliştiriciler için erişilebilir olmayabilir. sizin çözüm içinde türlerini tüketebilir Bu sadece değil tüm dillerde beri uyarıyor demektir (benim dükkanda biz bir hata olarak tedavi) bir uyarı

+0

Teşekkürler Ralph, projemin herhangi bir potansiyel VB istemcisine başvurulan derlemeden herhangi bir şey açığa çıkarmaması nedeniyle bunun neden önemli olduğunu anlamıyorum. VB istemcisini temeldeki meclisten etkin bir şekilde soyutlarım mı? – user115909

+0

VB büyük/küçük harfe duyarlı olmadığı için, SampleNamespace.A ve Samplenamespace.A arasında ayrım yapamaz ve dolayısıyla hangi türün çağrılacağını belirleyemez. Böyle bir belirsizliği önlemek için C# Compiler bunu işaretler, böylece sadece herhangi bir belirsizlik olmadan herkes tarafından çalıştırılabilen türleri ve üyeleri yaratabilirsiniz. – Gishu

+0

Sanırım, Bu bir kör kontrol bayrağıdır, aslında bunları nasıl kullandığınızı veya açığa çıkardığınızı düşünmüyor. – Gishu

2

yüzden senin durum, olmayabilir

olacak Farkın farkında olun (ve türleri kullanamayabilir). Emin değilim olsa iyi bir fikir olduğunu düşünüyorum

[assembly:CLSCompliant(false)] 

:

Sana (read more here) (AssemblyInfo.cs dosyasında) olmayan CLS uyumlu olarak derleme işaretleyerek bu uyarıyı önlemek düşünüyorum ...

Güncelleme: Sanırım hiçbir şey açığa çıkarılmamış olsa da uyarının nedeninin bu ad alanlarının erişim düzenleyicileri olmadığı yönündedir. İsim alanlarının her zaman açık olduğunu söyleyebiliriz, bu nedenle , herhangi bir genel türde içermemelerine rağmen potansiyel istemcilere maruz kalmaktadır.

+0

Fredrik, kodu CLS-Uyumlu olabilir ama benim app herhangi bir istemci kodu bu derleme maruz kalmayı düşünmüyoruz. CLS-Uygunluğunu kırmak için geçerli bir durum gibi görünmüyor. – user115909

+0

Ben de merak ettim ve bazı testler yaptım; Cevabımda güncellememi gör. –

+0

Bu, Fredrik'den beridir. Tek seçenekimin ad alanını değiştirmesi veya CLS uyumluluğunu false olarak ayarladığımı varsayalım. Yardımınız için teşekkürler – user115909

İlgili konular