2010-10-01 14 views
6

पर कॉपी नहीं कर रहा है मुझे अपने वेब ऐप के बिन फ़ोल्डर में कॉपी नहीं होने वाले देवर्ट डीएलएल के साथ कोई समस्या है। मेरे पास मेरा वेब ऐप प्रोजेक्ट है जो प्रोजेक्ट ए संदर्भित करता है। प्रोजेक्टए संदर्भ परियोजना बी। Devart Dlls प्रोजेक्ट बी में उपयोग किए जाते हैं और किसी बिल्ड के दौरान वेब ऐप प्रोजेक्ट बिन फ़ोल्डर में कॉपी नहीं किए जा रहे हैं। प्रोजेक्टबी ईएल यूनिटी डीएलएस का भी संदर्भ देता है और उनकी सही प्रतिलिपि बनाई जा रही है। प्रश्न में सभी डीएलएस भौतिक रूप से प्रोजेक्ट बी में एक फ़ोल्डर में स्थित हैं और यही वह संदर्भ बिंदु है। (मेरे पास जीएसी को इंगित करने वाले संदर्भ नहीं हैं)डेल फ़ोल्डर

सही ढंग से कॉपी करने वाले डीएलएस Microsoft.Practices.Unity, Microsoft.Practices.Unity.Configuration और Microsoft.Practices.ServiceLocation।

डीएलएस जो सही ढंग से कॉपी नहीं किए जा रहे हैं वे Devart.Data, Devart.Data.Oracle और Devart.Data.Oracle.Design हैं।

यहाँ प्रत्येक dll के लिए संदर्भ है ... किसी और

<Reference Include="Devart.Data, Version=5.0.124.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Devart.Data.Oracle, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.dll</HintPath> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Devart.Data.Oracle.Design, Version=5.70.170.0, Culture=neutral, PublicKeyToken=09af7300eec23701, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Devart.Data.Oracle.Design.dll</HintPath> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.ServiceLocation, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.ServiceLocation.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.Unity, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 
<Reference Include="Microsoft.Practices.Unity.Configuration, Version=2.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> 
    <HintPath>..\Dtn.PetroDex.Dal\ThirdPartyDlls\Microsoft.Practices.Unity.Configuration.dll</HintPath> 
    <SpecificVersion>False</SpecificVersion> 
    <Private>True</Private> 
</Reference> 

किसी को भी समस्या आ रही? क्या मैं यह गलत कर रहा हूँ? धन्यवाद

EDIT मैंने एक फ़ाइल मॉनीटर खोला और देखा कि दृश्य स्टूडियो संदर्भ लोड कर रहा था और एकता के लिए यह निर्दिष्ट स्थान से डीएलएस प्राप्त कर रहा था। लेकिन, देवर्ट डीएलएस के लिए यह जीएसी में देख रहा है! क्या देवता डीएलएस किसी भी तरह से इसका कारण बन सकता है?

उत्तर

8
  1. संदर्भित डीएलएस पर राइट क्लिक करें और जांचें कि स्थानीय प्रतिलिपि सही है या नहीं।
  2. आप एक बार अपने संदर्भों को पढ़ने की कोशिश भी कर सकते हैं, इसने मेरे लिए एक समान समस्या का समाधान किया था जब मैंने VS2005 प्रोजेक्ट को VS2008 प्रोजेक्ट में परिवर्तित कर दिया था।
+0

मेरे पास स्थानीय बराबर सत्य की प्रतिलिपि है। मैंने देवता संदर्भों को एक से अधिक बार फिर से जोड़ा ... मेरा विश्वास करो। ऐसा लगता है कि यह केवल देवर्ट डीएलएस है। क्या उनके पास कोई समस्या हो सकती है जो इसका कारण बन रही है? –

+0

मैं किसी और चीज के बारे में सोच नहीं सकता, शायद आप पोस्ट बिल्ड के दौरान थीस को प्रतिलिपि बनाने या सीधे डीएएल को प्रोजेक्ट ए –

+0

से प्रतिलिपि बनाने का प्रयास कर सकते हैं, यदि आपके पास जीएसी में डिवार्ट डीएलएस को हटाने और अपनी परियोजनाओं का पुनर्निर्माण करने का प्रयास करें –

0

यदि ये डीएलएल प्रोजेक्ट बी के लिए उप-निर्देशिका में हैं, तो सुनिश्चित करें कि प्रत्येक संदर्भ के लिए "स्थानीय कॉपी करें" संपत्ति सत्य पर सेट है।

इसके अलावा, यदि आपकी परियोजना में फ़ाइलों के रूप में DLL फ़ाइलों को शामिल किया गया है, तो फ़ाइलों के लिए दृश्य स्टूडियो गुणों को स्वयं जांचें। "बिल्ड एक्शन" को "कोई नहीं" पर सेट किया जाना चाहिए और "आउटपुट निर्देशिका में कॉपी करें" को "कॉपी न करें" पर सेट किया जाना चाहिए। संपादित करें: बस प्रतिलिपि स्थानीय = सत्य के साथ संदर्भ के रूप में उन्हें प्रतिलिपि का ख्याल रखना होगा।

यदि ये सेटिंग्स विभिन्न DLLS के लिए अलग हैं, तो यह समझा सकता है कि क्यों कुछ को बिन फ़ोल्डर में कॉपी किया जा रहा है और अन्य नहीं हैं।

11

मुझे बाहरी संदर्भों के साथ एक ही समस्या थी। बात यह है कि अप्रयुक्त पुस्तकालयों की प्रतिलिपि नहीं बनाई जाती है। क्या आप अपने प्रोजेक्ट बी से देवर्ट पुस्तकालयों का उपयोग करते हैं? कोई उदाहरण, विरासत, कुछ भी, ... ?? कृपया इसे आज़माएं: अपने प्रोजेक्ट बी में तीन पुस्तकालयों से कुछ नकली कक्षा को दोबारा स्थापित करें और पुन: संकलित करें। यह मेरे लिए काम किया है। मैं औपचारिक स्पष्टीकरण प्राप्त करना चाहता हूं।

1

स्थानीय के रूप में सेट करें मेरे लिए काम नहीं करता है। एकमात्र चीज जो हल करती है (अनुपयोगी है) असेंबली में निहित कुछ प्रकार का संदर्भ देना है।

3

समस्या तब भी दिखाई देती है जब आपके पास डीएलएस होते हैं जो दूसरों की निर्भरता होती हैं। उदाहरण के लिए Microsoft.AplicationServer.Caching.AzureClientHelper.dll को Microsoft.AplicationServer.Caching.Client द्वारा आंतरिक रूप से उपयोग किया जाता है। भले ही मेरे पास copyLocal = True है सहायक सहायक असेंबली की प्रतिलिपि नहीं बनाई गई है क्योंकि इसे सीधे मेरे कोड में संदर्भित नहीं किया गया है।इस समस्या से बचने के लिए आप इस तरह एक निजी प्रकार परिवर्तनीय बना सकते हैं:

प्रकार निर्भर करता हैऑनटाइपऑफएस्प्लोरस = टाइपोफ (TypeFromDependentAssembly);

यह इस प्रकार का संदर्भ देगा और निर्माण प्रक्रिया में असेंबली स्थानीय रूप से कॉपी की जाएगी।

संबंधित मुद्दे