Mağazamızda sürekli entegrasyonun bir parçası olarak ürünün yapılarını otomatikleştirmek için Cruise Control & MSBuild kullanıyoruz.Oluşturma işlemi derleme güçlü isimlerle imzaladığında çalışmak için InternalsVisibleTo alınıyor?
Yapının bir kısmı, derleyicileri güçlü isimler alacak şekilde imzalamaktır. Yerel olarak geliştirdiğimizde proje dosyalarımızda, MSBuild komut dosyası tarafından geçersiz kılındığından, imzalamayı belirtmez.
Bu, InternalsVisibleTo
özniteliğini kullanmamı gerektiren birim sınamaları yapmak istediğime karar verene kadar, her şey iyi ve güzel. Ayrıca bu tekniği kullanan birim testleri olan güzel bir açık kaynak kütüphanesi kullanmaya başladım.
[assembly: InternalsVisibleTo("MyProject.Tests.UnitTests")]
ve tüm iyi:
Bu
benim makinede, şu ifadeyi kullanmakAssemblyInfo.cs
güncelleyebilir, anlamına gelir. inşa makine meclisleri imzalar beri
Ancak aralarda yapı bu kontrol, bu çizgi artık şöyle bakmak güncelleştirilmesi gerekir:
[assembly: InternalsVisibleTo("MyProject.Tests.UnitTests,
PublicKey="magic key here..)"]
Ben meclisleri imzalamadım yarım akla sahip ve bir gün ara. Bununla birlikte, "imza meclisleri en iyi uygulamadır" (bu mantrayı 3 kez tekrarlayın) ve eğer bunu yapmaktan herhangi bir fayda elde edersek, onu uzak tutmak istemiyorum.
GAC'ye kurulum yapmıyoruz, özellikle kurcalamayı önemsemiyoruz, kütüphanelerimizi kullanan üçüncü taraflar için endişelenmenize gerek yok, uygulamayı güncellediğimizde tüm dosyalarımızı bir kerede güncelleriz. En tanımlanabilir fayda, destekte bulunan bir kişi, bir derlemenin rasgele bir sürümünü çalışma zamanı klasörüne kopyalayamaz ve bir süredir işler gibi görünebilir.
İmzalama işlemini etkinleştirmek için, yaklaşık 100 proje dosyasını elle değiştirerek ilgili işleri yapabilme özelliğini açmak istemiyorum. Ben de kamu olarak iç olması gereken şeyleri işaretleyerek şeyleri hacklemek istemiyorum, bağlayıcı yönlendirmeleri almak istemiyorum & Birim testlerini kaldırmak istemiyorum.
Güçlü isimlere sahip olmanın tüm faydaları ile güçlü isimlerin olmamasının kolaylığını (varsa) ve bunu yapmak için çok fazla iş yaratmak istemiyorum. Bu sormak için çok mu?
Bu mesaj iyi sorunu ve bir çözüm tarif eder, ama bundan yararlanmak için bir MSBuild komut adam sayılmam:
http://social.msdn.microsoft.com/forums/en-US/msbuild/thread/02df643c-956a-48bd-ac01-4a1016d91032/
bu soruna doğru çözümü nedir?
Herhangi bir girdi ve tartışma noktası açıktır.
Teşekkürler Thomas, bunu deneyeceğim ve bunu işe aldıktan sonra cevap olarak kabul edeceğim. Her yerde güçlü bir şekilde imzalamak için bazı sorunlar var, çoğunlukla bu değişikliği nasıl yapacağımı bilmiyorum ve bunu elle yapmak istemiyorum. MSBuild'i daha iyi bilen biri tarafından yazılan mevcut oluşturma senaryosumuz, imzalamayı daha iyi yapıyor ve büyük bir değişiklik yapmaktan ziyade biraz değiştireceğim. – Wes
Bunu hiç işe almadım, ama cevap olarak işaretleyeceğim. Çalışamayan şey, AssemblyInfoFiles adlı ItemGroup ... her zaman boş olurdu ... herhangi bir fikir neden? İçerme şekli temel olarak ne yazdığınızdır ... Teşekkürler! – Wes
Yukarıdaki ItemGroup, AssemblyInfo.cs dosyalarının düzeltme ekinin, oluşturma komut dosyasının altındaki bir dizinde bulunduğunu varsayar; joker karakter, geçerli olanın altındaki herhangi bir diziyle eşleşecektir. MSBuild hakkında daha fazla bilgi için sözdizimi [Nasıl Yapılır: Oluşturulacak Dosyaları Seçin] (http://msdn.microsoft.com/en-us/library/ms171454.aspx) bölümüne bakın. –