डुप्लीकेट असेंबली विमोचन


147

मेरे पास एक परियोजना है जो संकलन पर निम्नलिखित त्रुटि उत्पन्न करती है:

त्रुटि CS0579: डुप्लिकेट 'असेंबलीवेरेशन' विशेषता

मैंने फ़ाइल की जाँच की है AssemblyInfo.csऔर ऐसा लगता है कि वहाँ कोई दोहराव नहीं है।

मुझे यह लेख MSDN पर मिला है जो एक समान समस्या को संबोधित करता है और इस लेख में सुझाव का पालन करने से समस्या भी ठीक हो जाती है।

क्या कोई मुझे बता सकता है कि यहाँ क्या हो रहा है? क्या यह समान नाम वाले वर्गों के साथ दो या दो से अधिक प्रोजेक्ट होने की स्थिति में ही होता है? या यह कुछ और है?


बस एक अनुमान है, लेकिन क्या आपने पास की कोशिश की और समाधान फिर से खोल दिया? शायद यह हल हो सकता है?
स्टेफ्टो

4
यदि किसी प्रोजेक्ट को .NET कोर में परिवर्तित किया जा रहा है, तो elanderson.net/2017/06/…
माइकल फ्रीजिम

मैं मैक पर विजुअल स्टूडियो 2017 कम्युनिटी एडिशन का उपयोग कर रहा हूं। मेरे पास एक कंसोल ऐप था और फिर मैंने एक नए क्लास लाइब्रेरी प्रोजेक्ट का संदर्भ जोड़ा। जब मैंने निर्माण किया तो ये त्रुटियां दिखाई देने लगीं। मैंने केवल कक्षा पुस्तकालय परियोजना के संदर्भ को हटा दिया था और फिर इसे वापस जोड़ दिया और त्रुटियां दूर हो गईं।
पिस्सू

जवाबों:


127

मैं पूर्व में भी इस मुद्दे पर चल चुका हूं, इसलिए मैं यह मानने जा रहा हूं कि आपकी निर्माण प्रक्रिया असेंबली जानकारी प्रदान करती है अलग से संस्करण उपलब्ध कराने के लिए। और यह एक दोहराव का कारण बनता है क्योंकि आपके प्रोजेक्ट में AssemblyInfo.csफ़ाइल में वह जानकारी भी है । तो फ़ाइल को हटा दें और मुझे लगता है कि यह काम करना चाहिए।


3
इसलिए, नई प्रविष्टि बनाने के बजाय मौजूदा असेंबली वर्जन को अधिलेखित करने की प्रक्रिया का निर्माण नहीं करना चाहिए? मुझे पता है कि हमारी निर्माण प्रक्रिया यही करती है लेकिन मुझे इस बात की उत्सुकता है कि यह मौजूदा को क्यों नहीं अधिलेखित करता है। क्या यह बुरी तरह से लागू है या यह एक सीमा है?
आमिर

मुझे लगता है कि .net असेंबली में संस्करण इंजेक्शन विधि का उपयोग करने का बेहतर तरीका होगा। लेकिन एक अलग कहानी है। आपके मामले में समस्या यह है कि असेंबली संस्करणों को प्रदान करने के विभिन्न तरीके हैं, cmdline बिल्ड मापदंडों के माध्यम से और असेंबलीइंफो.फोकस के माध्यम से और आपको यह सुनिश्चित करना होगा कि केवल एक विधि का उपयोग किया जा रहा है क्योंकि विशेषताओं के दोहराव के रूप में एक .net संकलन त्रुटि है।
लुकी

वास्तव में क्या निकालें?
रॉबर्टो टोमोस

193

Visual Studio 2017 से AssemblyInfo.csफ़ाइल का उपयोग करने के लिए एक और समाधान शुरू करना इस तरह से स्वत: असेंबली जानकारी जनरेशन को बंद करना है:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
  </PropertyGroup>
</Project>

मुझे व्यक्तिगत रूप से यह उन परियोजनाओं के लिए बहुत उपयोगी है जो .NET फ्रेमवर्क और .NET मानक दोनों का समर्थन करने की आवश्यकता है।


4
हाँ, जो मेरे लिए काम करता था, ओबज और बिन फोल्डर को हटाना पर्याप्त नहीं था।
निक जोसव्स्की

दुर्भाग्य से, हर बार जब मैं .csprojअपने संपत्ति पृष्ठों (एप्लिकेशन, बिल्ड, बिल्ड इवेंट्स, आदि) का उपयोग कर फ़ाइल को बदल देता हूं , PropertyGroupतो GenerateAssemblyInfoगायब हो जाता है :-(
पालो मर्ज

3
इसे एक Directory.Build.props फ़ाइल में ले जाएँ
ब्रायन

2
क्या इस समाधान के साथ कोई जोखिम या नकारात्मक परिणाम संभव है?
mrcoulson

मेरी समस्या पूरी तरह से तय!
डैनियल मैकलीन

19

मेरे पास एक ही त्रुटि थी और यह असेंबली Vesrion और असेंबली फ़ाइल संस्करण को रेखांकित कर रहा था इसलिए लुकी उत्तर को पढ़ना मैंने उन्हें टिप्पणियों के रूप में जोड़ा और त्रुटि हल हो गई

// AssemblyVersion is the CLR version. Change this only when making breaking    changes
//[assembly: AssemblyVersion("3.1.*")]
// AssemblyFileVersion should ideally be changed with each build, and should help identify the origin of a build
//[assembly: AssemblyFileVersion("3.1.0.0")]

मैंने यह कोशिश की, और इसने मेरे मामले में कुछ भी नहीं बदला :-(
गर्टसेन

18

किसी पुराने प्रोजेक्ट को .NET कोर में कनवर्ट करते समय, अधिकांश जानकारी जो असेंबलीइन्फो में थी। अब प्रोजेक्ट पर ही सेट की जा सकती है। प्रोजेक्ट गुण खोलें और नई सेटिंग देखने के लिए पैकेज टैब चुनें।

एरिक एल एंडरसन की पोस्ट "डुप्लीकेट 'System.Reflection.AssemblyCompanyAttribute' विशेषता" का वर्णन करता है 3 विकल्प:


मुझे प्रोजेक्ट में इन विशेषताओं को निर्दिष्ट करने के लिए यह अधिक सहज और अधिक "विज़ुअल स्टूडियो" लगता है .csproj, क्योंकि वे कोड के बजाय मेटाडेटा हैं जो वास्तविक तर्क का वर्णन करते हैं। मुझे उम्मीद है कि भविष्य में परियोजना में सब कुछ निर्दिष्ट किया जा सकता है! (वर्तमान में मैं COM दृश्यता को निर्दिष्ट नहीं कर सकता, इसलिए मैं इसे छोड़ देता हूं AssemblyInfo.cs।)
फ्रैंकलिन यू

9

मेरे मामले में, संकलन के दौरान उत्पन्न कुछ अस्थायी * .cs फाइलें गलती से प्रोजेक्ट में जुड़ गईं।

फाइलें obj\Debugनिर्देशिका से थीं , इसलिए उन्हें निश्चित रूप से समाधान में नहीं जोड़ा जाना चाहिए था। ए*.cs वाइल्डकार्ड थोड़ा पागल हो गया और उन्हें गलत तरीके से जोड़ा।

इन फ़ाइलों को हटाने से समस्या ठीक हो गई।


9

मेरे मामले में, जहां एक प्रोजेक्ट में एक सबफ़ोल्डर था जो एक प्रोजेक्ट फ़ोल्डर था वह स्वयं:

  • फाइल सिस्टम:

    • c: \ परियोजनाओं \ WebAPI \ wepapi.csproj
    • c: \ परियोजनाओं \ WebAPI \ परीक्षण \ wepapitests.csproj
  • उपाय

    • वेबपीआई (फ़ोल्डर और परियोजना)
      • परीक्षण (फ़ोल्डर)
    • परीक्षण (फ़ोल्डर और परियोजना)

तब मुझे "वेबापी" परियोजना से सबफ़ोल्डर "परीक्षण" को हटाना पड़ा।


4

मेरे लिए यह था कि AssembyInfo.cs और SolutionInfo.cs के अलग-अलग मूल्य थे। इसलिए इन फाइलों को भी जांच लें। मैंने अभी उनमें से एक संस्करण को हटा दिया है।


3

मेरी त्रुटि इसलिए हुई, क्योंकि किसी तरह, मेरे नियंत्रक फ़ोल्डर के अंदर एक obj फ़ोल्डर बनाया गया था। बस अपने असेंबली के अंदर एक लाइन के लिए अपने आवेदन में एक खोज करें। कहीं-कहीं नकल भी हो सकती है।


इसी तरह, मेरे पास एक .csproj फ़ाइल (A) दूसरे फ़ोल्डर में होती है जो किसी अन्य .csproj (B) से संबंधित होती है।
taylorswiftfan

2

यह आमतौर पर मेरे लिए होता है अगर मैंने विज़ुअल स्टूडियो 2017 में प्रोजेक्ट संकलित किया और फिर मैं कमांड लाइन "डॉटनेट रन" के साथ .NET कोर के साथ इसे फिर से बनाने और चलाने की कोशिश करता हूं।

बस सभी "बिन" और "ओब्ज" फ़ोल्डर्स को हटाना - दोनों "क्लाइंटऐप" के अंदर और सीधे प्रोजेक्ट फ़ोल्डर में - ने .NET कोर कमांड "डॉटनेट रन" को सफलतापूर्वक पुनर्निर्माण और चलाने की अनुमति दी।


2

यहाँ प्रोजेक्ट में पहले से ही एक असेंबलीइन्फो .cs फ़ाइल होनी चाहिए: यहां छवि विवरण दर्ज करें

हल करने के लिए: - किसी भी एक विधानसभा को हटाएं


1

फिर भी एक और समाधान जब VS2017 के लिए कोर को अपग्रेड किया जा रहा है, तो उन्हें उन्हें properties \ Assemblyinfo.cs फ़ाइल में निकालना है।

चूंकि वे अब परियोजना में संग्रहीत हैं।


1

मुझे एमएसडीएन पर यह उत्तर मिला, जो फाइल को कंटेंट के रूप में चिह्नित करता है और फिर आउटपुट पर कॉपी करता है। नीचे लेख देखें:

https://social.msdn.microsoft.com/Forums/en-US/8671bdff-9b16-4b49-ba9e-227cc4df31b2/compile-error-cs0579-duplicate-assemblyversion-attribute?forum=vsgatk

जीएच


1

जब असेंबली Info.cs में अपना संस्करण अपडेट करने के लिए GitVersion टूल को जोड़ने की कोशिश की गई थी, तो मैं वही आया था। VS2017 और .NET कोर प्रोजेक्ट का उपयोग करें। इसलिए मैंने दोनों दुनियाओं को मिलाया। मेरे असेम्बलीइन्फो.कैंट्स में केवल संस्करण की जानकारी है जो कि GitVersion टूल द्वारा उत्पन्न की गई थी, मेरे csproj में रेमिंगिन चीजें हैं। कृपया ध्यान दें कि मैं <GenerateAssemblyInfo>false</GenerateAssemblyInfo>केवल संस्करण से संबंधित विशेषताओं का उपयोग नहीं करता (नीचे देखें)। यहां अधिक विवरण असेंबलीइन्फो संपत्तियां

AssemblyInfo.cs

[assembly: AssemblyVersion("0.2.1.0")]
[assembly: AssemblyFileVersion("0.2.1.0")]
[assembly: AssemblyInformationalVersion("0.2.1+13.Branch.master.Sha.119c35af0f529e92e0f75a5e6d8373912d457818")]

my.csproj में अन्य असेंबली विशेषताओं से संबंधित सभी शामिल हैं:

<PropertyGroup>
...
<Company>SOME Company </Company>
<Authors>Some Authors</Authors>
<Product>SOME Product</Product>
...
<GenerateAssemblyVersionAttribute>false</GenerateAssemblyVersionAttribute>
<GenerateAssemblyFileVersionAttribute>false</GenerateAssemblyFileVersionAttribute><GenerateAssemblyInformationalVersionAttribute>false</GenerateAssemblyInformationalVersionAttribute>

csproj मैप्स को प्रोजेक्ट प्रॉपर्टीज में टैब टैब पर रखें


1

मेरे पास यह मुद्दा था जब मेरी मुख्य परियोजना समाधान के समान फ़ोल्डर में थी, तो मेरे पास एक ही समाधान में एक उप फ़ोल्डर में स्थित एक अलग परियोजना थी, और उस अलग परियोजना ने एक संदर्भ के रूप में मुख्य परियोजना का उपयोग किया। इसने मुख्य प्रोजेक्ट का कारण उप फ़ोल्डर बिन और obj फ़ोल्डर्स का पता लगाया जो डुप्लिकेट संदर्भ बनाता था।


इससे मुझे बहुत मदद मिली! एक प्रोजेक्ट ने बिल्ड-टाइम डिपेंडेंसी के रूप में दूसरे को संदर्भित किया, लेकिन csproj में एक बग के कारण obj फोल्डर अलग हो गया, जिससे यह त्रुटि उत्पन्न हुई।
चाड जेसप

0

मेरी त्रुटि यह थी कि मैं अपनी परियोजना में एक अन्य फ़ाइल का भी उल्लेख कर रहा था, जो कि "असेंबली वर्जन" की विशेषता के लिए एक मूल्य भी रखती थी। मैंने उस विशेषता को फ़ाइल में से एक से हटा दिया है और यह अब ठीक से काम कर रही है।

कुंजी यह सुनिश्चित करने के लिए है कि यह मान आपकी परियोजना की किसी भी फ़ाइल में एक से अधिक बार घोषित नहीं किया गया है।


0

आपको असेंबलीइन्फो संपादित करें ।cs और #if! NETCOREAPP3_0 ... #endif

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.

#if !NETCOREAPP3_0  

[assembly: AssemblyTitle(".Net Core Testing")]
[assembly: AssemblyDescription(".Net Core")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct(".Net Core")]
[assembly: AssemblyCopyright("Copyright ©")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

// Setting ComVisible to false makes the types in this assembly not visible
// to COM components.  If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]

// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("000b119c-2445-4977-8604-d7a736003d34")]

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]

#endif

0

मुझे यह त्रुटि तब मिली जब मैंने एक ही निर्देशिका में 2 परियोजनाएं रखीं। अगर मेरे पास समाधान के साथ एक निर्देशिका है और मैं एक अलग वेब और डेटा निर्देशिका रखता हूं तो यह सही संकलन करता है।


0

यदि आपको Azure DevOps पर बिल्ड पाइपलाइन में यह समस्या हो रही है, तो AssembyInfo.cs फ़ाइल गुणों में "कॉपी करें यदि नया" के बराबर बिल्ड एक्शन को "सामग्री" और कॉपी को आउटपुट डायरेक्टरी के रूप में रखने का प्रयास करें।


0
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(15,12): error CS0579: Duplicate 'System.Reflection.AssemblyConfigurationAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(16,12): error CS0579: Duplicate 'System.Reflection.AssemblyFileVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(17,12): error CS0579: Duplicate 'System.Reflection.AssemblyInformationalVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(18,12): error CS0579: Duplicate 'System.Reflection.AssemblyProductAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(19,12): error CS0579: Duplicate 'System.Reflection.AssemblyTitleAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]
obj\Debug\netstandard2.0\PacktLibrary.AssemblyInfo.cs(20,12): error CS0579: Duplicate 'System.Reflection.AssemblyVersionAttribute' attribute [c:\Users\John_Tosh1\Documents\C#8.0and.NetCore3.0\Code\Chapter05\PacktLibrary\PacktLibrary.csproj]

मेरा मानना ​​है कि मेरे लाइब्रेरी फ़ोल्डर को किसी अन्य क्लास लाइब्रेरी के अनजाने निर्माण से दूषित किया गया था। मैंने लाइब्रेरी को एक संबद्ध फ़ाइल हटा दी लेकिन समस्या बनी रही। मुझे निर्देशिका में सभी बिन और obj फ़ोल्डरों को हटाकर एक वर्कअराउंड मिला। निर्माण पहले ठीक था, लेकिन एक सबफ़ोल्डर मिला जिसमें समान असेंबली एफ़एक्स फ़ाइल थी।


0

यह मुद्दा एक संदर्भ संघर्ष है जो ज्यादातर वीएस 2017 के लिए अजीब है।

मैंने इसी त्रुटि को 7-14 लाइनों के साथ-साथ असेंबली संस्करण के कोड असेंबली में पृष्ठ के निचले भाग पर नीचे टिप्पणी करके हल किया।

इसने सभी डुप्लिकेट संदर्भों को हटा दिया और परियोजना फिर से निर्माण करने में सक्षम थी।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.