ASP.Net त्रुटि: "टाइप 'फू' दोनों" temp1.dll "और" temp2.dll "में मौजूद है


108

वेब एप्लिकेशन प्रोजेक्ट चलाते समय, प्रतीत होता है कि यादृच्छिक समय में एक पृष्ठ CS0433 त्रुटि के साथ विफल हो सकता है: प्रकार कई DLL में मौजूद है। DLL के सभी डीएलएल "टेंपरेरी ASP.NET फाइल" डायरेक्टरी में रहते हैं।

जवाबों:


135

Web.config फ़ाइल के "संकलन" तत्व में बैच = "गलत" विशेषता जोड़ें।

यह समस्या इसलिए होती है क्योंकि ASP.NET 2.0 अनुप्रयोग संदर्भ और अनुप्रयोग के फ़ोल्डर संरचना का उपयोग करने के लिए अनुप्रयोग संकलित करता है। यदि अनुप्रयोग के लिए web.config फ़ाइल में तत्व का बैच गुण सही है, तो ASP.NET 2.0 अनुप्रयोग में प्रत्येक फ़ोल्डर को एक अलग असेंबली में संकलित करता है।

http://www.sellsbrothers.com/1995

http://support.microsoft.com/kb/919284


यार, उसके लिए धन्यवाद। आज एक उत्पादन स्थल में इसे ठीक करने के लिए पांव मार रहा था। न जाने क्या कारण है कि यह अभी तक (इतने लंबे समय से ठीक काम कर रहा है!), लेकिन इसने हमारे लिए इस मुद्दे को ठीक कर दिया है।
मैट

धन्यवाद। यह काम। इस त्रुटि के साथ आज सुबह उठा। MY ISP discountasp.net कुछ बदल गया होगा। यदि यह इस पद के लिए नहीं होता, तो भी मुझे त्रुटि होती। मेरे आईएसपी के लिए अंगूठे नीचे।
दमन

3
सहायक उत्तर - वाक्य रचना यहाँ है: <संकलन ... बैच = "झूठा" />
कातो नोव

1
इस चेतावनी पर ध्यान दें: "यह विधि केवल छोटे अनुप्रयोगों के लिए अनुशंसित है ... यह स्मृति विखंडन का कारण बनता है।"
दैटमथ्यू

22

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

या तो सामग्री के रूप में App_Code में .cs फ़ाइलों के लिए बिल्ड एक्शन करें या App_Code का नाम बदलकर कुछ और करें। मैंने नाम बदल दिया है क्योंकि intellisense सामग्री के रूप में चिह्नित .cs फ़ाइलों को ठीक नहीं करेगा।

अधिक जानकारी के लिए http://vishaljoshi.blogspot.se/2009/07/appcode-folder-doesnt-work-with-web.html


11

इस त्रुटि के लिए एक संभावित कारण यह 2 aspx पृष्ठ हैं, जिन्हें उनके में एक ही नाम हो रही है देखते हैं कि है inherits=में <@page language=......inherits=>लाइन।

inherits=नाम बदलने से त्रुटि हल हो जाती है।


2
इससे मेरी समस्या हल हो गई, ऐसा लगता है कि जब किसी को कुछ भी करने के लिए कोडबेहिन्ड की आवश्यकता नहीं होती है, तो एक usercontrol की कॉपी / पेस्ट थोड़ा मुश्किल है।
ग्रबसनिक

8

बस अगर कोई और मेरी समस्या साझा करता है, तो मुझे यह त्रुटि मिली जब एक नए ब्रांच्ड प्रोजेक्ट के वेब साइट को प्रकाशित करने की कोशिश की गई, बिल्ड ने पूरी तरह से काम किया।

पता चला है कि मैं प्रकाशित सेटिंग्स -> कॉन्फ़िगर करने योग्य के तहत "पहले से तैयार साइट को अपडेट करने की अनुमति देने के लिए चेकबॉक्स को हटाने के लिए भूल गया था ।"


4

एक अन्य डेटा बिंदु के रूप में, मुझे बस इस समस्या को बिना किसी परिपत्र संदर्भ के सबूत के रूप में बेन के जवाब में लिंक में वर्णित किया गया था। मेरी वेब साइट परियोजना का निर्माण इन त्रुटियों में से कुछ के साथ विफल हो जाएगा, और सेटिंगcompilation batch="false" इसे निर्धारित करना, लेकिन मैं उस मार्ग पर नहीं जाना चाहता था क्योंकि यह एक बड़ी-ईश उत्पादन वेबसाइट है।

यह समाधान मेरे D: \ svn फ़ोल्डर के सबफ़ोल्डर में था, जिसे मैंने S: में मैप किया था। जब मैंने S से समाधान खोला :, ये त्रुटियां हुईं, लेकिन अगर मैं सीधे D: \ svn पर गया और समाधान खोला, तो कोई त्रुटि नहीं।

मैंने यह भी देखा कि compilation batch="true"मेरे web.config में होने के बावजूद , मैप किए गए S से समाधान खोलने पर: मेरी सभी .ascx फ़ाइलों को अपनी असेंबली में संकलित करें। यदि मैं इसे भौतिक स्थान से खोलता हूं, तो .ascx फाइलें उनके संबंधित फ़ोल्डरों की असेंबली में संकलित हो जाती हैं (जो कि कैसे batch="true"काम करना चाहिए)।

अजीब।


4

यह त्रुटि वेब फॉर्म के वर्ग नाम और wsdl ठूंठ (फ़ाइल के पीछे कोड) के बीच संघर्ष के कारण थी, क्योंकि यह एक ही वर्ग है।

ASPX पेज: डैशबोर्ड क्लास: पार्टियाक्क् क्लास डैशबोर्ड

AppCode / APIServices.cs: सार्वजनिक आंशिक वर्ग डैशबोर्ड

त्रुटि केवल वेबसाइट प्रकाशित करने पर प्रतिलिपि प्रस्तुत करने योग्य थी, लेकिन बिल्ड और डीबग ने किसी त्रुटि की जानकारी नहीं दी।


2

मेरे मामले में मैंने एक परियोजना का नाम बदल दिया था, इसलिए डीएल का भी नाम बदल दिया गया था। जब मैंने नई dll की प्रतिलिपि बनाई, लेकिन सर्वर से पुराने को हटाने के बारे में नहीं सोचा, तो मेरे पास जल्द ही समान नामों के साथ वर्गों के जोड़े का एक गुच्छा था। पुरानी dll को हटाना चाल (कारण का) कर रहा था।


2

इनमें से किसी भी जवाब ने मेरे लिए काम नहीं किया, हालांकि मैंने समस्या को ठीक कर दिया। चूंकि मैं वेब एप्लिकेशन को तैनात करने के लिए वीएस के प्रकाशित समारोह का उपयोग कर रहा था, इसलिए मैंने प्रकाशन से पहले सभी मौजूदा फाइलों को हटाने का विकल्प चुना प्रकाशित वेब विज़ार्ड में । इसने आवेदन की एक स्वच्छ प्रतिलिपि के लिए मजबूर किया और वहां से सब कुछ ठीक चला।

यदि आपकी स्थानीय डीबगिंग प्रतिलिपि ठीक काम करती है, लेकिन प्रकाशित सिस्टम नहीं है तो यह समाधान सहायक हो सकता है। यदि आप हटाने के लिए अलग-अलग dll को ट्रैक करने के लिए समय नहीं निकालना चाहते हैं तो भी बहुत अच्छा है और उत्पादन फ़ाइलों को हटाने से पहले बुरा न मानें।


2

मेरे मामले में समाधान में सभी परियोजनाओं में बिन फ़ोल्डर्स से सभी आउटपुट असेंबलियों को हटाने से समस्या हल हो गई। दुर्भाग्य से मेरे पास इसके लिए कोई स्पष्टीकरण नहीं है।


1

मेरे मामले में, समस्या हल हो गई जब मैंने एक डिज़ाइनर। एड फ़ाइल को संपादित किया, जिसमें अभी भी डुप्लिकेट क्लास का नाम था। किसी कारण के लिए, जब मैंने डिज़ाइनर फ़ाइल में वर्ग "लॉगआउट" का नाम बदलकर "लॉगआउट 2" रखा, तो यह स्वचालित रूप से नहीं बदला गया था, और अभी भी "लॉगआउट" था, और यह वर्ग नाम पहले से ही मेरे प्रोजेक्ट में पहले से मौजूद dll में मौजूद था (जो संबंधित है) एक तृतीय पक्ष वेब ऐप जिसे मैं काम करता हूं और उसके आसपास विकसित करता हूं)।


यदि आप त्रुटि संदेश का एक नया तरीका लेकर आते हैं, तो इसे जोड़ने के लिए स्वतंत्र महसूस करें :)
Ben Fulton

1

इस समस्या को अलग उपयोगकर्ता नियंत्रण में एक aspx पृष्ठ का एक हिस्सा डाल दिया। मेरी मशीन पर सब कुछ ठीक था, सर्वर पर एक त्रुटि हुई।

समस्या वर्ग और फ़ाइल का नाम दिया।

http://support.microsoft.com/kb/919284 विधि 2: अनुप्रयोग में फ़ोल्डरों को फिर से लिखना संभव परिपत्र संदर्भों के बारे में लिख रहा है


1

इनमें से किसी भी समाधान ने मेरे लिए काम नहीं किया। मेरे दोनों परस्पर विरोधी DLL C: \ ... \ AppData \ ... \ Temporary ASP.NET Files \ ... में थे

समस्या यह थी कि मैंने अपने स्रोत रेपो को पहले वाले संस्करण में वापस ले लिया था - इससे पहले कि हम एक ही समाधान में एक परियोजना से दूसरी परियोजना में एक प्रकार को स्थानांतरित कर दें।

मैंने नए DLL को हटाने की कोशिश की - जो कि पुराने कोडबेस में भी नहीं होना चाहिए था - msbuild द्वारा पहचाने गए "अस्थायी ASP.NET फ़ाइलें" स्थान से। msbuild ने इसे वापस रखा।

मैंने वेब.कॉन्फ़िग सेटिंग की भी कोशिश की, जो यहाँ कुछ ने सफलतापूर्वक प्रयोग किया है, लेकिन वह भी काम नहीं किया। यद्यपि, जैसा कि मैं यह लिखता हूं, मुझे एहसास है कि वास्तव में एक ही समाधान के भीतर दो एमवीसी परियोजनाएं थीं और दोनों में त्रुटियां थीं, इसलिए समस्या यह हो सकती है कि मैंने दोनों में सेटिंग नहीं जोड़ी।

मैंने अपने स्रोत रेपो को आगे बढ़ाने और सफाई करने और फिर से वापस रोल करने और सफाई करने की कोशिश की। कुछ भी तो नहीं।

मैंने "अस्थायी ASP.NET फ़ाइलें" स्थान को हटाने की कोशिश की। msbuild ने इसे फिर से वापस रखा।

अंत में, मैंने विजुअल स्टूडियो में पुनर्निर्माण की कोशिश की। यद्यपि कमांड लाइन आउटपुट और "त्रुटियां" आउटपुट दोनों ने समान msbuild "अस्थाई ASP.NET फ़ाइलें" त्रुटि दी थी, Intellisense त्रुटि - जब विवादित प्रकार पर मँडरा - वास्तव में आउटपुट निर्देशिका में DLL के बारे में शिकायत की। जाहिरा तौर पर "स्वच्छ" और "पुनर्निर्माण" अपने काम नहीं कर रहे थे। मैंने Intellisense द्वारा पहचाने गए आउटपुट निर्देशिकाओं में DLL को मैन्युअल रूप से हटा दिया, और समस्या हल हो गई।

tl; dr - सुनिश्चित करें कि आप अपने सभी web.configs को बैच सेटिंग के साथ कवर कर रहे हैं, और आगे के सुराग के लिए Intellisense का लाभ उठाने का प्रयास करें।


1

मेरी समस्या एक .dll से जुड़ी थी जो मेरे प्रोजेक्ट फ़ोल्डर में उत्पन्न हो रही थी।

यदि आप किसी अन्य फ़ाइल को संदर्भित कर रहे हैं, तो आप जो कुछ भी ऊपर देखते हैं, उसे करने के बजाय, मेरी समस्या को तुरंत ठीक कर दिया गया था। केवल मेरी परियोजना के लिए मेरे / बिन निर्देशिका के अंदर रहने वाले .dll को हटा दिया गया था।

समस्या जरूरी नहीं कि web.config फिक्स हो - यह एक परिपत्र संदर्भ है जिसे हल करने की आवश्यकता है। मुझे एहसास हुआ कि मैंने अपनी मूल परियोजना फ़ाइल में पुरानी .dll को मंजूरी दे दी थी लेकिन उस परियोजना में नहीं जो इसे संदर्भित कर रही थी।

मैं आपकी web.config फ़ाइल में संशोधन करने की अनुशंसा नहीं करता क्योंकि यह सिर्फ एक बैंड-सहायता फिक्स है - वास्तव में वास्तविक समस्या का समाधान नहीं है। यदि आपको समस्या को ठीक करने का मन नहीं है, लेकिन अगर आप भविष्य के सिरदर्द से बचना चाहते हैं, तो बस दोनों स्थानों से .dll हटा दें।


1

मेरे पास दो अलग-अलग परियोजनाओं में एक ही नाम के साथ एक आंशिक वर्ग था। मैंने इसे केवल एक परियोजना में छोड़ कर इसे हल किया।


0

कभी-कभी यह समाधान को हटाने और इसे फिर से बनाने में मदद कर सकता है। चूंकि यह प्रयोग तब होता है जब VS2005 से vs2010 में रूपांतरित किया जाता है। कुछ संदर्भ फ्रेमवर्क 4.0 (अपग्रेड करने के बाद) समाधान में बने रहते हैं, यहां तक ​​कि सभी परियोजनाओं को 3.5 के रूप में परिभाषित किया गया है।

आम तौर पर समाधान के पुनर्निर्माण से इन समस्याओं को दूर करना चाहिए।


0

मुझे एक ही समस्या थी जब मैं एक संकलन सर्वर पर एप्लिकेशन को संकलित कर रहा था।

मेरे नियंत्रक का एक साधारण स्थिर कोड था, इसलिए मैंने अपना ascx बदल दिया:

 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="controllerName.ascx.cs" Inherits="Controls.controllerName" %>

सेवा

 <%@ Control Language="C#" AutoEventWireup="true" Src="controllerName.ascx.cs" Inherits="Controls.controllerName" %>

आंशिक कीवर्ड को भी कोडबेहिंड से हटा दिया और कोडबेहिंड में एक नामस्थान जोड़ा।

यह:

using System;
using System.Web.UI;

/// <summary>
/// My controller
/// </summary>
public partial class controllerName: UserControl
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
}

इसके लिए:

using System;
using System.Web.UI;

namespace Controles
{
    /// <summary>
    /// My controller
    /// </summary>
    public class controllerName : UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
        }
    }
}

और वह मेरे लिए काम किया।


0

मेरे लिए यह तब हुआ जब मैंने अपना PrecompiledWeb / Publish स्थान वर्तमान निर्देशिका पर सेट किया जो कि साइट का रूट फ़ोल्डर भी था।

मेरी वेब साइट तब प्रकाशित फ़ोल्डर को प्रोजेक्ट के भाग के रूप में देख रही थी जब संकलन / निर्माण कर रहा था और फिर उस तरीके से डुप्लिकेट ढूंढ रहा था।

यानी अपनी साइट के प्रकाशित / पूर्वनिर्मित संस्करण को अपनी साइट के कोड फ़ोल्डरों में न डालें।


0

यदि DLL अस्थायी फ़ोल्डर में दिखाई दे रहा है, तो आपको अपने समाधान को साफ करने का प्रयास करना चाहिए।


0

मेरा समाधान पोस्ट करना:

मुद्दा Mcafee एंटीवायरस के "ऑन-एक्सेस स्कैन" से संबंधित था। इसे अक्षम करने से समस्या हल हो गई। किसी तरह एंटीवायरस चालू होने पर ASP द्वारा ASP अस्थाई फ़ोल्डर का सही उपयोग नहीं किया जा रहा था।

आशा है कि यह किसी की मदद करता है।


क्या आप जानते हैं क्यों? मेरी टीम को भी यह समस्या है, और वे कहते हैं कि यह McAfee के कारण है, हालांकि, कॉर्पोरेट आईटी नियमों के आधार पर, हम एंटीवायरस को निष्क्रिय कर सकते हैं (जिसमें हस्तक्षेप नहीं करना चाहिए!)।
कैट लिम रुइज़

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

0

App_Code फ़ोल्डर समस्या पैदा कर रहा है, वर्ग को फ़ोल्डर के बाहर रखें (ठीक काम करता है)

App_Code फ़ोल्डर वेब एप्लिकेशन प्रोजेक्ट के लिए डिज़ाइन नहीं किया गया है

http://vishaljoshi.blogspot.in/2009/07/appcode-folder-doesnt-work-with-web.html


0

संदर्भ जोड़ें और दोनों dll की खोज करें, दोनों dll की जाँच की जाएगी, एक dll को अनचेक करें, क्योंकि एक ही dll के संदर्भ अलग-अलग संस्करण अस्पष्टता के साथ उत्पन्न होते हैं।


0

मेरा समाधान CodePage = "...." को CodeBehind = "..." के साथ .aspx फ़ाइल में बदलना था। किसी तरह इसे पिछले .NET संस्करणों से माइग्रेशन के दौरान कोडपेज के रूप में छोड़ दिया गया था। यह पृष्ठ निर्देश एक और dll फ़ाइल बनाता है जो प्रोजेक्ट dll फ़ाइल के साथ टकराव करता है।


0

इस समाधान में से किसी ने भी मेरे लिए काम नहीं किया। "रिलीज़" मोड में संकलन ने काम किया, लेकिन जब मैंने "डीबग" पर स्विच किया, तो मुझे इस त्रुटि संदेश की ओम्पटीन मिली।

मुझे समझ में क्यों नहीं आता है, लेकिन विज़ुअल स्टूडियो का एक सरल पुनरारंभ मेरा समाधान था।


0

मुझे संकलन समय में समस्या का सामना करना पड़ा।

मैं इस बात से सहमत साथ बैच = "true" गुण, त्रुटि विधानसभा मौजूद 2 कह रहा है

समाधान 1: उनमें से एक को हटाना

Solution2: उनमें से एक को कॉन्फ़िगर करें

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