2013-03-18 11 views
7

मेरे पास विजुअल स्टूडियो में एक प्रोजेक्ट खुला है (यह Enyim.Caching होता है)। यह असेंबली देरी-हस्ताक्षर करना चाहता है। वास्तव में, यह विलंब-हस्ताक्षरित होने के लिए इतनी दृढ़ता से चाहता है कि मैं दृश्य स्टूडियो को संकलित करने में असमर्थ हूं बिना हस्ताक्षर में देरी।असेंबली से हस्ताक्षर निकालें

  1. मैं अनियंत्रित है "देरी केवल हस्ताक्षर" और दृश्य स्टूडियो परियोजना गुण बॉक्स पर, और पुनर्निर्माण "विधानसभा साइन इन करें"। असेंबली अभी भी देरी संकेत के लिए चिह्नित है (जैसा कि sn.exe -v द्वारा दिखाया गया है)।

  2. मैंने प्रोजेक्ट को अनलोड कर दिया है और सत्यापित किया है कि हस्ताक्षर गलत पर सेट है। प्रोजेक्ट को फिर से लोड करते समय, "साइन" और "देरी साइन" के लिए चेक बॉक्स चेक किए जाते हैं।

  3. मैंने सत्यापित किया है कि असेंबलीइन्फो (या अन्यत्र) में कोई विशेषता मौजूद नहीं है जो इसका कारण बनती है।

  4. मैंने समाधान के लिए इंटरनेट की खोज की है, लेकिन मुझे कोई नहीं मिला है।

मैं यह कैसे कर सकता हूं?

उत्तर

9

इस मामले में, समस्या एक परियोजना "सामान्य गुण" संदर्भ है।

< आयात परियोजना = ".. \ \ CommonProperties.targets निर्माण"/>

दुर्भाग्य से, फ़ाइल:

परियोजना .csproj फ़ाइल इस अहानिकर थोड़ा लाइन है के अंदर

(CommonProperties.targets) गुणों को फिर से लिखने के लिए वीएस निर्देशित करता है, लेकिन यह उपयोगकर्ता इंटरफ़ेस में यह स्पष्ट संकेत प्रदान नहीं करता है कि यह हो रहा है। मेरी राय में, जो भी इसे डिजाइन किया गया है उसे अवशोषित और पंख होना चाहिए।

समाधान CommonProperties.targets फ़ाइल में निम्न लाइनों जाने के लिए और नष्ट करने के लिए है:

<!-- delay sign the assembly if the PrivateKeyPath property is not specified --> 
<PropertyGroup Condition=" '$(PrivateKeyPath)' == '' And '$(PrivateKeyName)' == ''"> 
    <AssemblyOriginatorKeyFile>..\public_key.snk</AssemblyOriginatorKeyFile> 
    <DelaySign>true</DelaySign> 
</PropertyGroup> 

<!-- sign the assembly using the specified key file containing both the private and public keys --> 
<PropertyGroup Condition=" '$(PrivateKeyPath)' != '' "> 
    <AssemblyOriginatorKeyFile>$(PrivateKeyPath)</AssemblyOriginatorKeyFile> 
    <DelaySign>false</DelaySign> 
</PropertyGroup> 

<!-- sign the assembly using the specified key container containing both the private and public keys --> 
<PropertyGroup Condition=" '$(PrivateKeyName)' != '' "> 
    <AssemblyOriginatorKeyFile></AssemblyOriginatorKeyFile> 
    <DelaySign>false</DelaySign> 
</PropertyGroup> 

निम्नलिखित के साथ उन पंक्तियों को बदलें:

<PropertyGroup> 
    <DelaySign>false</DelaySign> 
    <SignAssembly>false</SignAssembly> 
    </PropertyGroup> 
+0

उत्तर के लिए धन्यवाद .... एक ही समस्या, एक ही असेंबली। मुझे बाल खींचने का एक टन बचाया :) – GrahamB

+0

यदि यह समस्या को ठीक नहीं करता है, तो आप यह भी देख सकते हैं कि 'AssemblyInfo.cs' में क्या है: http://stackoverflow.com/a/13200542/1869660 – Sphinxxx

0

एक ही समस्या मौसम। के बाद भी मैं अक्षम "विधानसभा साइन" "देरी केवल साइन इन करें" और, मैं अभी भी त्रुटि

error MSB3325: Cannot import the following key file: . The key file may be password protected". 

मिला और .csproj सही है:

<PropertyGroup> 
    <SignAssembly>false</SignAssembly> 
    <DelaySign>false</DelaySign> 
</PropertyGroup> 

हालांकि, वहाँ नीचे एक और मुश्किल लाइन है :

<SignAssembly Condition="Exists('..\xxx.pfx')">true</SignAssembly> 

के बाद ही मैं .csproj में लाइन को हटा दिया, या डिस्क पर फ़ाइल को हटा दिया, तो वी.एस. जाना ठीक है।

वीएस की एक बग की तरह लगता है।मैं जिस संस्करण का उपयोग कर रहा हूं:

Microsoft Visual Studio 2010 
Version 10.0.40219.1 SP1Rel 
Microsoft .NET Framework 
Version 4.5.50709 SP1Rel 
संबंधित मुद्दे