2011-06-29 16 views
26

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

इस से बचने के लिए वास्तव में मैं सोच रहा हूं कि क्या सशर्त संदर्भ होना संभव है, इसलिए डीबग कॉन्फ़िगरेशन के लिए, मैं उन्हें संदर्भ संदर्भ के रूप में संदर्भित करता हूं, जबकि रिलीज कॉन्फ़िगरेशन में वे द्विआधारी संदर्भ होंगे।

+1

कोई अच्छा तरीका नहीं है जिसके बारे में मुझे पता है; अतीत में मैंने कई समाधानों का उपयोग किया है ... एक "मास्टर" समाधान जो कि यदि आप प्रमुख वास्तुशिल्प परिवर्तन कर रहे हैं, तो फिर सबकुछ संदर्भित करते हैं, और फिर एक अलग परियोजना पर काम करते हुए परियोजना समाधान अलग करें। आम तौर पर, एक पिटा। –

+0

आप मैन्युअल रूप से '.csproj' फ़ाइल को संशोधित करके ऐसा कर सकते हैं। – SLaks

+0

आप अपनी बिल्डिंग प्रक्रिया को संशोधित करके ऐसा कर सकते हैं। एमएसबिल्ड जैसे टूल का प्रयोग करें। –

उत्तर

39

आपको परियोजना फ़ाइल को सीधे संपादित करके सशर्त संरचनाओं के साथ ऐसा करने में सक्षम होना चाहिए (वीएस आईडीई आपके लिए यह नहीं करेगा)।

उदाहरण के लिए, आप इस तत्व "चुनें" का उपयोग कर की तरह कुछ कर सकता:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" > 
    <PropertyGroup> 
     <!-- ... --> 
    </PropertyGroup> 
    <Choose> 

     <When Condition=" '$(Configuration)'=='Debug' "> 
      <ItemGroup> 
       <ProjectReference Include="..\stuff\MyStuff.csproj"> 
        <Project>{4c7bbe47-8d84-45d4-95f0-f640ba59563c}</Project> 
        <Name>MyStuff</Name> 
       </ProjectReference> 
      </ItemGroup> 
     </When> 

     <When Condition=" '$(Configuration)'=='Retail' "> 
      <ItemGroup> 
       <Reference Include="MyStuff.dll" /> 
      </ItemGroup> 
     </When> 

    </Choose> 
    <!-- Rest of Project --> 
</Project> 

MSDN more information about using conditional constructs है।

+0

क्या इन परियोजनाओं को समाधान का हिस्सा भी करना है? –

+0

मुझे विश्वास है, लेकिन "रिलीज" मामले में यह अभी भी ठीक होना चाहिए। उन्हें दिखने के रूप में दिखाना चाहिए, जो इससे कोई फर्क नहीं पड़ता क्योंकि रिहाई के निर्माण में उन्हें वास्तव में संदर्भित नहीं किया जा रहा है। – Matt

4

आप NuGet पर एक नजर है करने के लिए चाहते हो सकता है:

NuGet

NuGet एक मुक्त, खुला स्रोत डेवलपर ध्यान केंद्रित पैकेज प्रबंधन नेट मंच के इरादे के लिए पर प्रणाली की प्रक्रिया को सरल है विकास के दौरान एक .NET अनुप्रयोग में तीसरे पक्ष के पुस्तकालयों को शामिल करने के लिए।

नोट (जहां इस मामले में तीसरे पक्ष के अपने आप हो जाएगा): यह आप सशर्त संदर्भ देना नहीं होगा, लेकिन यह आम घटकों को अद्यतन करने में आसानी होगी।

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