2015-06-05 7 views
9

मुझे एफ # कक्षा पुस्तकालय परियोजना पर हस्ताक्षर करने की कोशिश करने में बहुत परेशानी हो रही है। सबसे पहले मैं इस thread की कोशिश की, AssemblyKeyFileAttribute का उपयोग कर, लेकिन कोई सफलता मिली है। मैंने प्रोजेक्ट गुणों ("बिल्ड" टैब में "अन्य ध्वज" फ़ील्ड) में "--keyfile: keyfile.snk" ध्वज जोड़ने का भी प्रयास किया और यह भी काम नहीं किया। मैं विजुअल स्टूडियो 2013 का उपयोग कर रहा हूं, और यह सी # क्लास लाइब्रेरी प्रोजेक्ट्स जैसे "साइनिंग" टैब को नहीं दिखाता है।हस्ताक्षर एफ # असेंबली

सभी निम्न त्रुटि इन प्रयासों के परिणाम:

एफएससी: त्रुटि FS2014: एक समस्या बाइनरी 'obj \ रिलीज \ ExcelFinancialFunctions.dll' लिख हुई: StrongNameGetPublicKey करने के लिए एक कॉल विफल (मूल्य में नहीं आती अपेक्षित सीमा।)

क्या मैं गलत कर रहा हूँ? दृश्य स्टूडियो उपयोग करने के बजाय, मैं इसे बनाने के स्क्रिप्ट के हिस्से के रूप कार्य करें:

उत्तर

6

Fwiw, यहाँ मैं कैसे साइन ZeroToNine है। मूलतः, यह AssemblyOriginatorKeyFile और SignAssembly का उपयोग करके किया गया है:

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

आप (लगभग) ZeroToNine रेपो में सभी बुनियादी तथ्य विवरण, the actual build script I use for signing सहित देख सकते हैं। सार्वजनिक रेपो से लापता एकमात्र विस्तार वास्तविक .snk फ़ाइल है, क्योंकि यह सार्वजनिक रूप से उपलब्ध होने पर मजबूत नाम कुंजी रखने का कोई अर्थ नहीं होगा।

यहां बताया गया है मैं बैश से निर्माण स्क्रिप्ट फोन:

build-release.sh ../ZeroToNine.snk 

आप देख सकते हैं, मैं अपने .snk फ़ाइल रेपो के बाहर रहने वाले है, और इसे स्क्रिप्ट के एक तर्क के रूप में गुजरती हैं।

+0

यह वास्तव में एक अच्छा समाधान है। मुझे नहीं पता था कि एमएसबिल्ड के पास यह स्वयं का हस्ताक्षर तंत्र है, हालांकि मैं इल्मेज (असेंबली लिंकर - अल ने भी काम नहीं किया है!) का उपयोग कर साइनिंग समस्या को हल करने में कामयाब रहा है, हालांकि यह अजीब उद्देश्य नहीं है। चूंकि यह मेरा से बेहतर समाधान है, इसलिए मैं इसे सही उत्तर के रूप में चिह्नित करूंगा। धन्यवाद! –