2013-02-12 9 views
9

हमने हाल ही में हमारे निरंतर एकीकरण बिल्ड सर्वर पर .NET 4.5 स्थापित किया है ताकि यह नई परियोजनाओं का समर्थन कर सके जो .NET 4.5 की सुविधाओं का उपयोग करते हैं। इस बिल्ड सर्वर का उपयोग पुरानी परियोजनाओं को बनाने और तैनात करने के लिए भी किया जाता है, साथ ही, जिनमें से कुछ .NET 4.0 को लक्षित करते हैं।.NET 4.5 के साथ एक बिल्ड सर्वर सफलतापूर्वक स्थापित एक .NET 4.0 स्थापित सर्वर के साथ एक परियोजना लक्ष्यीकरण 4.0 को तैनात कर सकता है?

परियोजनाओं कि .NET 4.0 को लक्षित इस सर्वर पर बनाया जा रहा है, तो एक लक्ष्य सर्वर है कि केवल .NET 4.0 स्थापित अब निम्न त्रुटि के साथ विफल हो रहे हैं के लिए तैनात:

Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'. 

Environment.CurrentManagedThreadId एक नया है .NET Framework 4.5 की संपत्ति, इसलिए यह समझ में आता है कि 4.0 चल रहा सर्वर इसे नहीं ढूंढ सकता है। हालांकि, हम निर्माण समय पर .NET 4.0 को लक्षित करते हैं, इसलिए सिद्धांत में हमें को की आवश्यकता नहीं है, ताकि उत्पादन सर्वर पर 4.5 इंस्टॉल हो सके।

सारांश में:

  • परियोजना 4.0
  • बिल्ड सर्वर 4.5 स्थापित किया है
  • सर्वर जिस पर परियोजना तो तैनात है लक्षित करता है केवल .NET 4.0
  • परियोजना के साथ कार्यावधि में विफल रहता है है त्रुटि Method not found: 'Int32 System.Environment.get_CurrentManagedThreadId()'.

क्या देता है? क्या सर्वर पर .NET 4.0 dlls को सफलतापूर्वक चलाने के लिए संभव है .NET 4.0 स्थापित है जब डीएलएस सर्वर द्वारा .NET 4.5 के साथ बनाया जाता है?

उत्तर

12

ऐसा इसलिए होता है क्योंकि 4.5 4.0 में एक इन-प्लेस अपग्रेड है। जब बिल्ड सर्वर संकलित करता है, डिफ़ॉल्ट रूप से, यदि आप लक्ष्यीकरण कर रहे हैं तो भी 4.5 असेंबली मिलेगी। .NET 4.

आप इसे सही कर सकते हैं, लेकिन आपको अपने निर्माण सर्वर पर 4.0 संदर्भ असेंबली जोड़ने की आवश्यकता है (इसलिए कंपाइलर उन्हें पाता है), और न केवल .NET 4.5 संस्करणों पर भरोसा करते हैं।

विवरण के लिए, Marc Gravell's blog post on the subject देखें।

+0

धन्यवाद, यह ब्लॉग पोस्ट उस सटीक समस्या का वर्णन करने के लिए प्रतीत होता है जिसे हम अनुभव कर रहे हैं। हालांकि, जहां तक ​​हम बिल्ड सर्वर * बता सकते हैं * पहले से ही 4.0 संदर्भ असेंबली हैं, इसलिए हम अभी भी सुनिश्चित नहीं हैं कि क्या गलत हो रहा है। –

+0

@ डेविड मिल्स सामान्य रूप से, मैं वास्तव में दृढ़ता से सुझाव देता हूं कि यदि आप 4.0 को लक्षित करने जा रहे हैं तो बिल्ड सर्वर पर 4.5 इंस्टॉल नहीं करना चाहते हैं। इस जगह के अपग्रेड में बहुत सारे ब्रेकिंग बदलाव हैं। ऐसा कहा जा रहा है, अगर यह रेफ असेंबली सही स्थान पर हैं तो इसे काम करना चाहिए। –

+0

धन्यवाद, रीड। हम आगे बढ़े हैं और परियोजना लक्ष्यीकरण 4.0 का समर्थन करने के लिए जेनकींस बिल्ड गुलाम सर्वर स्थापित कर चुके हैं। यह दुर्भाग्यपूर्ण है, लेकिन प्रतीत होता है। उम्मीद है कि माइक्रोसॉफ्ट एक और .NET संस्करण को इन-प्लेस अपग्रेड के रूप में रिलीज़ करने से पहले दो बार सोचेंगे। –

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