मैं हमारे लिए बिल्डर्स स्थापित करने पर काम कर रहा हूं टीम।माइक्रोसॉफ्ट (टीएफएस) सर्वर बनाएं - नाम या नामस्थान नाम '...' नामस्थान '...' में मौजूद नहीं है (क्या आप एक असेंबली संदर्भ खो रहे हैं?)
पृष्ठभूमि
हम माइक्रोसॉफ्ट विजुअल स्टूडियो 2010 अंतिम उपयोग कर रहे हैं। हमारे उत्पाद में सी # कोड (मुख्य रूप से), बाहरी डीएलएल और सी कोड शामिल है। हम नेट 4.0 के साथ काम कर रहे हैं और 70 से अधिक परियोजनाएं हैं।
हम अपने कोड के 3 शाखाओं के साथ काम कर रहे हैं:
- उत्पादन branche (जो वर्तमान में जारी किया गया है)
- टेस्ट branche (गर्म फिक्स, बग फिक्स, अंत उपयोगकर्ता परीक्षण)
- विकास branche (नए भ्रूण जोड़ना)
सभी शाखाएं टीएफ स्रोत नियंत्रण में हैं।
लक्ष्य
क्या हम चाहते हैं एक बिल्ड सर्वर का निर्माण और एक दिन में एक बार सभी शाखाओं के लिए सभी इकाई परीक्षण चलाने के लिए है, बिल्ड सर्वर स्रोत नियंत्रण में कोड का उपयोग करना चाहिए। हमारा लक्ष्य कुछ तेज मानक त्रुटि पहचान होना है। हम बिल्ड सर्वर को बनाए रखने के लिए कम से कम पसंद करेंगे।
हम बिल्डर्स उत्पाद का निर्माण करने के लिए उपयोग नहीं करेंगे, हम चाहते हैं कि बिल्डिंग सर्वर का उपयोग लगातार हमारी शाखाओं का निर्माण और इकाई परीक्षण करने के लिए करें।
क्या की स्थापना की है
वर्तमान में दो निर्माण परिभाषा टेस्ट Branche के लिए एक और विकास Branche लिए, और दोनों स्रोत नियंत्रण से कोड लेने परिभाषाओं का निर्माण स्थापित कर रहे हैं (वह हिस्सा सब अच्छा काम करता है), लेकिन यहां वह जगह है जहां मजा शुरू होता है।
समस्या
टेस्ट Branche का निर्माण और रन इकाई परीक्षण सब ठीक कर सकते हैं।
विकास Branche (जैसे या की 5) एक की वजह से निर्माण नहीं कर सकते त्रुटियों:
The type or namespace name 'XXX' does not exist in the namespace 'YYY' (are you missing an assembly reference?)
त्रुटि वाई दोनों परियोजना एक्स परियोजना से परियोजना एक्स refereing के लिए है और वाई सी # नेट 4.0 परियोजनाओं और हम दोनों पर पूरी तरह से नियंत्रण है, एक्स और वाई दोनों को डीएलएल के लिए संकलित किया गया है। प्रोजेक्ट वाई में प्रोजेक्ट एक्स में कक्षाएं इंटरफेस शामिल हैं।
कष्टप्रद विस्तार यह है कि परियोजना एक्स या वाई के लिए टेस्ट ब्रैंच और डेवलपमेंट ब्रेंस में कोई अंतर नहीं है। दोनों परियोजनाएं पिछले 3 महीने पूरी तरह से समान हैं।
तो सवाल यह है कि यह टेस्ट ब्रंच में क्यों काम करता है लेकिन विकास ब्रांच में नहीं?
मैं परीक्षण किया है:
- परियोजनाओं को सही ढंग से एक दूसरे के लिए संदर्भित कर रहे हैं। - सभी 3 शाखाओं में मेरे/किसी भी सहकर्मी विकास मशीनों (हमने 5 अलग-अलग मशीनों पर परीक्षण किया है) पर कोई समस्या नहीं है। - मैंने पूरे एक्स प्रोजेक्ट को हटाने और इसे फिर से बनाने की कोशिश की है, काम नहीं किया। - मैंने पूरे वाई प्रोजेक्ट को हटाने और इसे फिर से बनाने की कोशिश की है, काम नहीं किया है। - मैंने प्रोजेक्ट एक्स प्रोजेक्ट और इसकी कक्षाओं के लिए नेमस्पेस बदलने की कोशिश की है, काम नहीं किया। - मैंने प्रोजेक्ट वाई प्रोजेक्ट और इसकी कक्षाओं के लिए नेमस्पेस बदलने की कोशिश की है, काम नहीं किया। - (मैंने अपनी विकास मशीन को भी पुनरारंभ किया है) - सभी परिवर्तनों को हमेशा स्रोत नियंत्रण में चेक किया गया है जहां बिल्डर्स को बनाने के लिए सेट किया गया था।
अतिरिक्त जानकारी
मैं प्रवेश फाइलों में चारों ओर से खुदाई की गई है और पाया कुछ interessting विवरण, इस विकास Branche
Task "AssignProjectConfiguration"
Project reference "..\..\A" has been assigned the "Debug|x86" configuration.
Project reference "..\..\Y" has been assigned the "Debug|x86" configuration. (can see there is a project Y)
Project reference "..\..\B" has been assigned the "Debug|x86" configuration.
में निर्माण परियोजना एक्स के विवरण के लिए है लेकिन फिर टास्क में एक ही कार्य के लिए "ResolveAssemblyReference"
Task "ResolveAssemblyReference"
TargetFrameworkMoniker:
.NETFramework,Version=v4.0
TargetFrameworkMonikerDisplayName:
.NET Framework 4
TargetedRuntimeVersion:
v4.0.30319
Assemblies:
System
System.Xml.Linq
System.Data.DataSetExtensions
Microsoft.CSharp
System.Data
System.Xml
System.Core
AssemblyFiles:
C:\Builds\1\A
C:\Builds\1\B
(----- Missing project Y -----)
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll
कहाँ टेस्ट brance में
Task "ResolveAssemblyReference"
TargetFrameworkMoniker:
.NETFramework,Version=v4.0
TargetFrameworkMonikerDisplayName:
.NET Framework 4
TargetedRuntimeVersion:
v4.0.30319
Assemblies:
System
System.Data.Entity
System.Xml.Linq
System.Data.DataSetExtensions
Microsoft.CSharp
System.Data
System.Xml
System.Core
AssemblyFiles:
C:\Builds\1\A
C:\Builds\1\B
C:\Builds\1\Y (There it is)
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\mscorlib.dll
तो यह किसी कारण बस "भूल" वाई
सहायता
यदि आप एमएसबिल्ड लॉगिंग विवरण के साथ विस्तृत या डायग्नोस्टिक पर सेट करते हैं तो इसे ResolveAssemblyReference कार्य के दौरान बहुत अधिक जानकारी थूकनी चाहिए, जिसमें प्रत्येक स्थान को देखा गया था और संदर्भ नहीं मिला था। क्या इसमें कोई चेतावनी/त्रुटियां हैं? –
"ResolveAssemblyReference" कार्य से ठीक पहले यह चेतावनी फेंकता है: 'कार्य "चेतावनी" c: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets (1200,9): चेतावनी: संदर्भित प्रोजेक्ट '.. \ Y' मौजूद नहीं है। [सी: \ बिल्ड \ 1 \ एक्स] कार्य निष्पादित करने "चेतावनी"। –
मैं पहले लॉग-फ़ाइल में देख सकता हूं: 'फ़ाइल से कॉपी नहीं किया गया "सी: \ बिल्ड \ 1 \ ... \ ... \ y "फाइल करने के लिए" सी: \ बिल्ड \ 1 \ y "क्योंकि" SkipUnchangedFiles "पैरामीटर को प्रोजेक्ट में" सत्य "और फ़ाइलों के आकार और टाइमस्टैम्प मैच पर सेट किया गया था। तो ऐसा लगता है कि इसे चाहिए वहाँ रहना। और और भी, वाई डीएल ड्रॉप स्थान पर भेजा जाता है, लेकिन एक्स डीएल नहीं है। तो वाई डीएल संकलित है। –