2009-09-29 3 views
19

एनवी .: वीएस 2008 सी # परियोजनाविजुअल स्टूडियो प्रोजेक्ट: केवल एक कॉन्फ़िगरेशन के लिए संदर्भ कैसे शामिल करें?

मुझे 2 अलग-अलग वातावरण में उपयोग के लिए अपना ऐप बनाने की आवश्यकता है। उन वातावरणों में से एक में, मुझे एक तृतीय पक्ष डीएलएल असेंबली का उपयोग करने की आवश्यकता है।

मैं #if ब्लॉक का उपयोग कर इस डीएलएल का उपयोग करने वाले कोड को अलग कर सकता हूं। लेकिन मैं सीएस प्रोजेक्ट फ़ाइल में डीएलएल के संदर्भ में सशर्त रूप से कैसे शामिल करूं?

संपादित करें: गर्भ की टिप्पणी में एक अच्छा बिंदु है। मैं separate question में बदल गया: क्या संदर्भित डीएलएल को कभी भी लोड नहीं किया जाएगा यदि इसे कभी नहीं कहा जाता है? TIA,

+2

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

+0

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

उत्तर

24

अनलोड परियोजना और .XML

के रूप में इसे खोलने के संदर्भ आइटम टैग का पता लगाएं और एक स्थिति गुण जोड़ें।

उदाहरण के लिए:

<ItemGroup> 
    <Reference Include="System.Core"> 
    <RequiredTargetFramework>3.5</RequiredTargetFramework> 
    </Reference> 
    <Reference Include="System.Data" /> 
    <Reference Include="System.Drawing" /> 
    <Reference Include="System.Xml" /> 

    <Reference Include="MyUtilities.Debug" 
    Condition="'$(Configuration)'=='Debug'"/> 

</ItemGroup> 

सूचना पिछले संदर्भ अब एक शर्त है।

+2

यह मेरा विचार भी था, इसलिए मैंने कोशिश की। मेरे मामले में जिसने संदर्भ को सभी कॉन्फ़िगरेशन में विफल करने का कारण बताया (सिस्टम ने ऐसा अभिनय किया जैसे यह असेंबली नहीं मिल सका)। –

+2

हाँ समस्या यह है कि आईडीई परिस्थितियों के साथ चीजों को अनदेखा करता है और उस स्थिति में, इसे सभी प्रकार के कारणों (इंटेलिजेंस, ऑब्जेक्ट ब्राउज़र ...) के लिए इसकी आवश्यकता होती है, इसलिए यह शिकायत करेगी। साथ ही, आपको उस असेंबली को सशर्त कॉल करना होगा, अन्यथा संकलक उस असेंबली को नहीं ढूंढ पाएगा जिस पर कोड रेफर कर रहा है। – Coincoin

1

निम्नलिखित, csproj फ़ाइल संदर्भ itemgroup मेरे लिए बनाम 2008 में काम करता है में: -

<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Debug' "> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\Visual Studio User Library\Debug\DRLClasses.dll</HintPath> 
</Reference> 
<Reference Include="DRLClasses, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" Condition=" '$(Configuration)' == 'Release' "> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\..\..\..\Visual Studio User Library\Release\DRLClasses.dll</HintPath> 
</Reference> 
+4

आप केवल '$ (कॉन्फ़िगरेशन) 'वैरिएबल को सीधे हिंटपाथ में जोड़कर इसे सरल बना सकते हैं: ' <संदर्भ शामिल करें = "DRLClasses, संस्करण = 1.0.0.0, संस्कृति = तटस्थ, प्रोसेसर आर्किटेक्चर = MSIL"> <विशिष्ट संस्करण> गलत .. \ .. \ .. \ .. \ विजुअल स्टूडियो उपयोगकर्ता लाइब्रेरी \ $ (कॉन्फ़िगरेशन) \ DRLClasses.dll ' – awe

2

मैं जानता हूँ कि यह एक पुरानी पोस्ट है, लेकिन इस मामले में किसी और को यह पाता इससे पहले कि वे उत्तर नहीं मिलता है, जैसे मैंने किया था, यह इस है: आप परियोजना फ़ाइल में तत्व "चुनें" का उपयोग करने की जरूरत है:

link

आप ताकि आप उपयोग करने के लिए नहीं है, एक ही स्थान पर दोनों सशर्त संदर्भ और सशर्त संकलन परिभाषित कर सकते हैं # अगर आपके कोड में है।

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

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