2010-07-21 11 views
16

विज़ुअल स्टूडियो 2010 और 4.0 फ्रेमवर्क में अपग्रेड करने के तुरंत बाद हमारे ट्रंक बिल्ड ने के साथ तोड़ना शुरू कर दिया फ़ाइल या असेंबली त्रुटि लोड नहीं कर सका।

हम निर्धारित किया है कि एक 3.5 परियोजना एक 4.0 परियोजना वरना हम यह त्रुटि प्राप्त होता संदर्भ नहीं हो सका क्योंकि, त्रुटि राज्यों, इस विधानसभा एक क्रम वर्तमान में लोड क्रम से नए द्वारा बनाया गया है और लोड नहीं किया जा सकता है के रूप में ।

मुझे क्यों मिल रहा है सिस्टम पर फ़ाइल या असेंबली त्रुटि लोड नहीं हो सका। फ्रेमवर्क 4.0 का उपयोग करते समय कॉन्फ़िगरेशन डीएलएल?

हमने तब से इसे हल कर लिया है और ट्रंक ठीक से निर्माण कर रहा है।

मैं हाल ही में एक शाखा और टैग, तथापि किया था, और अचानक इस त्रुटि फिर जाग उठा है जब मैं शाखा बनाने की कोशिश; सिवाय इसके कि त्रुटि सिस्टम के अपने .NET 4.0 प्रोजेक्ट के संदर्भ में से एक है। कॉन्फ़िगरेशन डीएलएल।

Core.Dev \ Towps \ projetcs \ Application \ MyService में Towps.Namespace.MyService.csproj:
RG0000: संदर्भित नहीं लोड किया जा सका विधानसभा

"C: \ Windows \ Microsoft.Net \ विधानसभा \ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll "।
ने एक BadImageFormatException पकड़ा "कह रहा है कि फ़ाइल या असेंबली लोड नहीं हो सका
'सी: \ विंडोज \ माइक्रोसॉफ्ट.Net \ assembly \ GAC_MSIL \ System.Configuration \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ System.Configuration.dll' या इसकी निर्भरताओं में से एक
यह असेंबली वर्तमान में लोड किए गए रनटाइम की तुलना में रनटाइम द्वारा बनाई गई है और इसे लोड नहीं किया जा सकता है। " ResGen (0, 0)

मैंने उस सिस्टम पर विशिष्ट संस्करण प्रॉपर्टी सेट करने का प्रयास किया। कॉन्फ़िगरेशन डीएलएल सच होने से इनकार कर दिया।
मैं इसके गुणों में देख सकता हूं कि रनटाइम संस्करण v4.0.30319 है और संस्करण 4.0.0.0 है। \ Program Files (x86) \ संदर्भ विधानसभाओं \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Configuration.dll जो मेरे लिए ठीक लग रहा है:
DLL रेफरी के लिए पथ सी है।

csproj फ़ाइल कि CrusieControl MSBuild उपयोग कर रहा है निर्माण करने के लिए ढांचा 4.0 लक्षित कर रहा है की कोशिश करने के लिए लक्ष्य ढांचा। फिर ठीक लगता है।

यह दोनों ट्रंक & शाखा के लिए आईडीई में बनाता है। क्रूज कंट्रोल इसे ट्रंक में बनाते हैं। क्रूसी कंट्रोल बनाने की कोशिश करते समय शाखा निर्माण विफल रहता है।

कोई विचार क्या हो सकता है?

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

शाखा बस ट्रंक की एक प्रति तो मैं निर्धारण अंतर हो सकता है कठिनाई आ रही थी!

उत्तर

4

ऐसा लगता है कि बाद मैं branched, अपनी शाखा का निर्माण निर्देशिका में सभी .proj फ़ाइलों को उपयोग करता है cc.net वापस ToolVerison का उपयोग कर = "3.5" के लिए गए थे। मैंने सोचा कि मैंने सभी टूल्सवर्सन = "4.0" प्रोज किया है और ट्रंक में कॉन्फ़िगरेशन परिवर्तन किए हैं, जिससे मैंने शाखा बनाई है; स्पष्ट रूप से नहीं।

2

अंतर आसानी से संकेत पथ नहीं रह गया है नई शाखा पर अस्तर हो सकता है। हालांकि आपके विवरण में जाने के लिए कोई लॉग नहीं है। आप जिस कमांड लाइन विकल्प पारित कर रहे हैं वो क्या हैं? ccnet.config और ccnet.config में कोई अन्य जो भी हो सकता है, उस निर्माण स्क्रिप्ट पर इंगित कर रहा है जो सीधे .sln या .csproj फ़ाइल के बजाय msbuild को कॉल करता है।

दोनों पर /v:d for the msbuild चालू करें और फिर उस असेंबली या उसके आस-पास के अन्य लोगों के संदर्भ संदर्भ (या ऑर्डर, आदि ..) की तुलना करें।

इसके अलावा आप पथ दोनों पर MSBuild करने के लिए प्रदान कर रहे हैं?

msbuild4="C:\WINNT\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe"

<msbuild> 
    <executable>$(msbuild4)</executable> 

अपने ccnet.config में?

मैंने देखा है यह एक msbuild4 /tv:3.5 दौरान 2.0 निर्माण निष्पादन रिपोर्ट:

<Message Text="MSBuildToolsPath:$(MSBuildToolsPath)" /> 
<Message Text="MSBuildToolsVersion:$(MSBuildToolsVersion)" /> 

MSBuildToolsPath:C:\WINNT\Microsoft.NET\Framework\v2.0.50727 
MSBuildToolsVersion:2.0 

ताकि बहुत उपयोगी नहीं मालूम था।

मैं दोनों शाखा और ट्रंक के लिए config ब्लॉक देखने के लिए चाहते हैं।

मैं जानता हूँ कि मैं buildscript कि मेरी शाखा में विफल हो गया क्योंकि वहाँ एक हार्डकोडेड रास्ता है कि शाखा के लिए मान्य नहीं होता था में कुछ पथ था। शाखा के लिए ओवरराइड करने के लिए उन वस्तुओं के तर्कों को पारित करने के लिए मुझे ccnet.config समायोजित करना पड़ा।

0

कृपया अपने क्लाइंट द्वारा समर्थित .net ढांचे संस्करण की जांच करें। उदाहरण के लिए sharepoint2010 4.0 या उच्चतम नेट फ्रेमवर्क द्वारा निर्मित डीएलएल का समर्थन नहीं करेगा। यह केवल 3.5 या नीचे का समर्थन करेगा।

0

थोड़ा देर से मैं जानता हूँ कि, लेकिन अगर किसी और को इस मुद्दे है, अगर यह पहले से ही मौजूद नहीं है अपने .dna फ़ाइल में RuntimeVersion जोड़ने का प्रयास करें।

<DnaLibrary Name="PROJECTNAME" RuntimeVersion="v4.0">