2015-06-05 24 views
9

F # sınıfı kitaplık projesini imzalamaya çalışırken çok fazla sorun yaşıyorum. İlk olarak, AssemblyKeyFileAttribute'u kullanarak bu thread'u denedim, ancak hiç başarılı olmadım. Ayrıca "--keyfile: keyfile.snk" işaretini "Build" sekmesindeki proje özelliklerine ("Diğer Flags") eklemeye çalıştım ve bu da işe yaramadı. Visual Studio 2013 kullanıyorum ve C# sınıf kitaplığı projeleri gibi "imzalama" sekmesini göstermiyor. Aşağıdaki hataSigning F # Assembly

tüm girişimleri sonuç:

FSC: hata FS2014: Bir sorun ikili 'obj \ Release \ ExcelFinancialFunctions.dll' yazılı oluştu: StrongNameGetPublicKey için bir çağrı başarısız (Değer yer almıyor beklenen aralık.)

Neyi yanlış yapıyorum?

cevap

6

FWIW, İşte ben nasıl ZeroToNine imzaladım: Visual Studio kullanmak yerine yapı betiğinin bir parçası olarak yapıyorum. Esasen, bu AssemblyOriginatorKeyFile ve SignAssembly kullanarak bitti:

MSBuild.exe /property:AssemblyOriginatorKeyFile=mykey.snk /property:SignAssembly=true 

Sen (neredeyse) the actual build script I use for signing dahil ZeroToNine repo tüm asıl mesele ayrıntılarını görebilir. Kamusal repodan eksik olan tek detay asıl .snk dosyasıdır, çünkü eğer kamuya açıksa güçlü bir isim anahtarının olması mantıklı olmaz. İşte

Bash gelen yapı komut diyoruz edebilirsiniz: Gördüğünüz gibi

build-release.sh ../ZeroToNine.snk 

, benim .snk dosya repo dışında ikamet eden var ve komut bir argüman olarak geçmektedir.

+0

Bu gerçekten güzel bir çözümdür. Msbuild'in kendi imzalama mekanizmasına sahip olduğunu bilmiyordum, ancak ilmerge kullanarak imzalama problemini çözmeyi başardım (montaj linker - al çok iş görmemişti). Bu benimkinden daha iyi bir çözüm olduğundan, doğru cevap olarak işaretleyeceğim. Teşekkürler! –