विभिन्न बिल्ड कॉन्फ़िगरेशन के लिए अलग-अलग ऐप का चयन कैसे करें


115

मेरे पास एक dll-type परियोजना है जिसमें MSTest एकीकरण परीक्षण शामिल हैं। मेरी मशीन पर परीक्षण पास हो जाते हैं, और मैं एक CI सर्वर पर भी ऐसा ही चाहता हूं (मैं टीमसिटी का उपयोग करता हूं)। लेकिन परीक्षण विफल हो जाते हैं, क्योंकि मुझे app.config में कुछ सेटिंग्स को ट्विक करने की आवश्यकता होती है। यही कारण है कि मैं एक अलग ऐप.कॉन्फ़िग फ़ाइल रखने की सोच रहा था, जो CI सर्वर के लिए सेटिंग्स को होल्ड करेगा।

इसलिए मैं करना चाहूंगा

/ SLN
 / Proj
  app.config (मुझे लगता है कि यह वी.एस. द्वारा आवश्यक है)
  app .elease.config (यह एक स्वसंपूर्ण स्वतंत्र विन्यास फाइल है)

इस प्रकार यदि मैं CI पर बिल्ड कॉन्फिगरेशन में रिलीज़ कॉन्फ़िगरेशन का चयन करता हूं, तो मैं ऐप का उपयोग करना चाहूंगा। एप्लिकेशन के बजाय .Release.config फ़ाइल ।config

समस्या
यह सरल। Dll प्रकार परियोजनाओं के लिए सीधी नहीं लगती है। वेब प्रोजेक्ट्स के लिए, मैं वेब कॉन्फिग ट्रांसफॉर्मेशन कर सकता हूं। मुझे एक dll प्रकार परियोजना के लिए इन परिवर्तनों को करने के लिए एक हैक मिला, लेकिन मैं hacks का बहुत बड़ा प्रशंसक नहीं हूं।

प्रश्न
.NET प्रोजेक्ट्स के लिए बिल्ड कॉन्फिगरेशन (जैसे कि डीबग, रिलीज़, ...) के आधार पर ऐप्लीकेशन को ट्वीक करने के लिए एक स्टैंडर्ड अप्रोच क्या है?

जवाबों:


154

SlowCheetah प्लगइन का उपयोग करें । SlowCheetah का उपयोग कैसे करें के अधिक विकल्पों और विवरणों के लिए पढ़ते रहें।

जैसा कि आप पहले ही देख चुके हैं, लाइब्रेरी प्रकार (.dll) परियोजना के लिए अलग-अलग कॉन्फिग फाइलों का उपयोग करने का कोई डिफ़ॉल्ट और आसान तरीका नहीं है । इसका कारण यह है कि वर्तमान सोच है: "आपको जरूरत नहीं है"! फ्रेमवर्क डेवलपर्स को लगता है कि आपको निष्पादन योग्य फ़ाइल के लिए कॉन्फ़िगरेशन की आवश्यकता है: यह एक कंसोल, डेस्कटॉप, वेब, मोबाइल ऐप या कुछ और हो। यदि आप एक dll के लिए कॉन्फ़िगरेशन प्रदान करना शुरू करते हैं , तो आप कुछ के साथ समाप्त हो सकते हैं जिसे मैं एक नरक नरक कह सकता हूं । आप अब (आसानी से) समझ नहीं सकते हैं कि क्यों और इस चर में ऐसे अजीब मूल्य हैं जो कहीं से भी प्रतीत होते हैं।

"पकड़ो", - आप कह सकते हैं, "लेकिन मुझे अपने एकीकरण / यूनिट परीक्षण के लिए इसकी आवश्यकता है, और यह एक पुस्तकालय है!"। और यह सच है और यह वह है जो आप कर सकते हैं (केवल एक को चुनें, मिश्रण न करें):

1. SlowCheetah - वर्तमान विन्यास फाइल को रूपांतरित करता है

आप SlowCheetah स्थापित कर सकते हैं - एक विजुअल स्टूडियो प्लग-इन जो आपके लिए सभी निम्न स्तर XML poking (या परिवर्तन) करता है। जिस तरह से यह काम करता है, संक्षेप में:

  • SlowCheetah इंस्टॉल करें और Visual Studio (Visual Studio> Tools> Extensions and Updates ...> Online> Visual Studio Gallery> "Slow Cheetah" की खोज करें) को पुनरारंभ करें।
  • अपने समाधान कॉन्फ़िगरेशन को परिभाषित करें ( डिबग और रिलीज़ डिफ़ॉल्ट रूप से वहां हैं), आप अधिक जोड़ सकते हैं ( समाधान एक्सप्लोरर में समाधान पर सही क्लिक करें > कॉन्फ़िगरेशन प्रबंधक ... > सक्रिय समाधान कॉन्फ़िगरेशन > नया ...
  • यदि आवश्यक हो तो एक कॉन्फ़िग फ़ाइल जोड़ें
  • कॉन्फ़िग फ़ाइल> ट्रांसफ़ॉर्म जोड़ें पर राइट क्लिक करें
    • यह रूपांतरण फ़ाइलें बनाएगा - आपके कॉन्फ़िगरेशन के अनुसार
    • ट्रांस्फ़ॉर्म फ़ाइल्स इंजेक्टर / म्यूटेटर के रूप में काम करते हैं, उन्हें मूल कॉन्फ़िग फ़ाइल में XML कोड की आवश्यकता होती है और नई लाइनों को इंजेक्ट करते हैं या आवश्यक मान को म्यूट करते हैं, जो भी आप इसे करने के लिए कहते हैं।

2. .proj फ़ाइल के साथ फिडेल - कॉपी-एक नया कॉन्फिग फाइल का नाम बदल देता है

मूल रूप से यहां से लिया गया है । यह एक कस्टम MSBuild कार्य है जिसे आप Visual Studio .proj फ़ाइल में एम्बेड कर सकते हैं । प्रोजेक्ट फ़ाइल में निम्न कोड को कॉपी और पेस्ट करें

<Target Name="AfterBuild">
    <Delete Files="$(TargetDir)$(TargetFileName).config" />
    <Copy SourceFiles="$(ProjectDir)\Config\App.$(Configuration).config"
          DestinationFiles="$(TargetDir)$(TargetFileName).config" />
</Target>

अब नामक प्रोजेक्ट में एक फ़ोल्डर बनाएं Configऔर वहां नई फाइलें जोड़ें: App.Debug.config , App.Release.config और इतने पर। अब, आपके कॉन्फ़िगरेशन के आधार पर, विज़ुअल स्टूडियो एक Configफ़ोल्डर से कॉन्फिगर फाइल को उठाएगा, और इसे आउटपुट डायरेक्टरी में कॉपी-रीनेम करेगा। इसलिए यदि आपके पास PatternPA.Test.Integration प्रोजेक्ट और डिबग कॉन्फिगरेशन का चयन किया गया है, तो निर्माण के बाद आउटपुट फ़ोल्डर में आपको एक PatternPA.Test.Integration.dll.config फ़ाइल मिलेगी जिसे Config\App.Debug.configबाद से कॉपी किया गया और नाम दिया गया।

ये कुछ नोट हैं जिन्हें आप कॉन्फिग फाइलों में छोड़ सकते हैं

<?xml version="1.0" encoding="utf-8"?>
<configuration>

    <!-- This file is copied and renamed by the 'AfterBuild' MSBuild task -->

    <!-- Depending on the configuration the content of projectName.dll.config 
        is fully substituted by the correspondent to build configuration file 
        from the 'Config' directory. -->

</configuration>

विजुअल स्टूडियो में आप कुछ इस तरह से हो सकते हैं

परियोजना की संरचना

3. Visual Studio के बाहर स्क्रिप्टिंग फ़ाइलों का उपयोग करें

प्रत्येक बिल्ड टूल (जैसे NAnt , MSBuild ) कॉन्फ़िगरेशन के आधार पर कॉन्फिगर फाइल को बदलने की क्षमता प्रदान करेगा। यह उपयोगी है यदि आप एक निर्माण मशीन पर अपना समाधान बनाते हैं, जहां आपको उत्पाद को रिलीज़ करने के लिए क्या और कैसे तैयार करना है, इस पर अधिक नियंत्रण रखने की आवश्यकता है।

उदाहरण के लिए आप किसी भी विन्यास फाइल को बदलने के लिए वेब प्रकाशन dll के कार्य का उपयोग कर सकते हैं

<UsingTask AssemblyFile="..\tools\build\Microsoft.Web.Publishing.Tasks.dll"
    TaskName="TransformXml"/>

<PropertyGroup>
    <!-- Path to input config file -->  
    <TransformInputFile>path to app.config</TransformInputFile>
    <!-- Path to the transformation file -->    
    <TransformFile>path to app.$(Configuration).config</TransformFile>
    <!-- Path to outptu web config file --> 
    <TransformOutputFile>path to output project.dll.config</TransformOutputFile>
</PropertyGroup>

<Target Name="transform">
    <TransformXml Source="$(TransformInputFile)"
                  Transform="$(TransformFile)"
                  Destination="$(TransformOutputFile)" />
</Target>

आपका दूसरा समाधान ठीक काम करता है, लेकिन वेब परियोजनाओं के प्रकाशन के लिए नहीं। ASP.NET प्रोजेक्ट को प्रकाशित करने के बाद, मूल web.config प्रकाशित किया जाता है।
मसूद खारी

3
@MassoodKhaari आपको यह सुनिश्चित करने की आवश्यकता है कि यह कार्य प्रकाशित लक्ष्य के लिए कहा जाता है। जब आप किसी प्रोजेक्ट को प्रकाशित करते हैं तो एक अलग बिल्ड टारगेट कहा जाता है, जिसे डिफॉल्ट AfterBuildटारगेट नहीं कहा जा सकता है । विशिष्ट संकलन के दौरान AfterBuildलक्ष्य को डिफ़ॉल्ट रूप से कहा जाता है। प्रकाशित मामले के लिए एक त्वरित समाधान होना चाहिए
oleksii

1
अपनी दूसरी विधि (थोड़े) का इस्तेमाल किया। परियोजना के गुण के पास गया और संपादित BeforeBuild कॉपी करने के लिए App.<Target>.configअधिक App.configमें परियोजना dir , नहीं उत्पादन dir।
स्पार्क

@oleksii आप सही कह रहे हैं। लेकिन मुझे अभी भी लक्ष्य नहीं मिला कि मेरी वेब प्रकाशन प्रक्रिया (विज़ुअल स्टूडियो 2013 में) का उपयोग कर रही है।
मसूद खारी

1
मैं दूसरी विधि का उपयोग कर रहा हूं, लेकिन फ़ाइल को हटाने से पहले वास्तव में मौजूद है यह सुनिश्चित करने के लिए AfterBuild लक्ष्य में एक शर्त जोड़ने की आवश्यकता है। मेरे पास एक डीबग बिल्ड कॉन्फ़िगरेशन है, जो मूल रूप से केवल डिफ़ॉल्ट App.config फ़ाइल का उपयोग करता है, लेकिन मेरे पास कोई App.Debug.config नहीं था, जिसका अर्थ था कि बिल्ड चरण विफल हो जाएगा। मैंने अभी जोड़ा Condition="Exists('$(ProjectDir)App.$(Configuration).config')"
शीवर्स

23

आप निम्नलिखित दृष्टिकोण की कोशिश कर सकते हैं:

  1. समाधान एक्सप्लोरर में प्रोजेक्ट पर राइट-क्लिक करें और अनलोड प्रोजेक्ट चुनें ।
  2. परियोजना को उतार दिया जाएगा। प्रोजेक्ट पर फिर से राइट-क्लिक करें और Edit <YourProjectName> .csproj चुनें
  3. अब आप Visual Studio के अंदर प्रोजेक्ट फ़ाइल को संपादित कर सकते हैं।
  4. * .Csproj फ़ाइल में वह स्थान ढूँढें जहाँ आपकी एप्लिकेशन कॉन्फ़िगरेशन फ़ाइल शामिल है। ऐसा लगेगा:
    <ItemGroup>
        <कोई नहीं = "App.config" /> शामिल करें
    </ ItemGroup>
  1. इस पंक्तियों को निम्नलिखित के साथ बदलें:
    <ItemGroup शर्त = "$ (कॉन्फ़िगरेशन) '==' डीबग '">
        <कोई भी शामिल नहीं है = "App.Debug.config" />
    </ ItemGroup>

    <ItemGroup शर्त = "$ (कॉन्फ़िगरेशन) '==' रिलीज़ '">
        <कोई नहीं = "App.Release.config" /> शामिल करें
    </ ItemGroup>

मैंने app.configफ़ाइलों के लिए इस दृष्टिकोण की कोशिश नहीं की है , लेकिन इसने विज़ुअल स्टूडियो परियोजनाओं के अन्य मदों के साथ ठीक काम किया है। आप अपनी पसंद के अनुसार निर्माण प्रक्रिया को लगभग किसी भी तरह से कस्टमाइज़ कर सकते हैं। वैसे भी, मुझे परिणाम जानने दो।


जवाब के लिए Tnx, लेकिन यह app.config के साथ काम नहीं करता है। VS को एक अनिवार्य की आवश्यकता होती है app.configऔर यदि मैं VS बिल्ड या टीमसिटी VS स्लन बिल्ड रनर का उपयोग करता हूं तो यह रिलीज कॉन्फिगर नहीं कर रहा है।
oleksii 21

2
यहाँ बताया गया है कि यह कैसे करना है: app.debug.config app.release.config
Gabrielizalo

1
इस जवाब के पास इतने वोट क्यों हैं? मैंने इसकी कोशिश की और यह काम नहीं करता है। वास्तव में डीबग और रिलीज़ मोड में कोई App.config फ़ाइल नहीं है और इसलिए, आउटपुट फ़ोल्डर में कोई संबंधित फ़ाइल नहीं है। Visual Studio के लिए App.Debug.config और App.Release.config फ़ाइलों का कोई अर्थ नहीं है।
मार्कसपर्कर

यह काम नहीं करता है: .csproj खोला नहीं जा सकता, त्रुटि संदेश "लक्ष्य तत्वों के बाहर के तत्व होने चाहिए: शामिल करें, अपडेट करें या निकालें"
एलो

12

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

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

उपयोग का एक उदाहरण हो सकता है ...

<Target Name="BeforeBuild">
    <Exec Command="C:\Tools\cfg -s $(ProjectDir)App.Config.Settings.xls -t       
        $(ProjectDir)App.config.template.xml -o $(SolutionDir)ConfigGen" />

    <Exec Command="C:\Tools\cfg -s $(ProjectDir)App.Config.Settings.xls -t
        $(ProjectDir)App.config.template.xml -l -n $(ProjectDir)App.config" />
</Target>

यदि आप इसे अपनी .csproj फ़ाइल में रखते हैं, और आपके पास निम्न फ़ाइलें हैं ...

$(ProjectDir)App.Config.Settings.xls

MachineName        ConfigFilePath   SQLServer        

default             App.config      DEVSQL005
Test                App.config      TESTSQL005
UAT                 App.config      UATSQL005
Production          App.config      PRODSQL005
YourLocalMachine    App.config      ./SQLEXPRESS


$(ProjectDir)App.config.template.xml 

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <configuration>
   <appSettings>
       <add key="ConnectionString" value="Data Source=[%SQLServer%]; 
           Database=DatabaseName; Trusted_Connection=True"/>
   </appSettings>
</configuration>

... तो यह होगा परिणाम ...

पहले कमांड से, xls फ़ाइल में निर्दिष्ट प्रत्येक वातावरण के लिए उत्पन्न एक कॉन्फिगर फाइल, आउटपुट डायरेक्टरी $ (सॉल्यूशनडियर) कॉन्फिगरेशन फाइल में रखी गई है।

.../solutiondir/ConfigGen/Production/App.config

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
   <configuration>
   <appSettings>
       <add key="ConnectionString" value="Data Source=PRODSQL005; 
           Database=DatabaseName; Trusted_Connection=True"/>
   </appSettings>
</configuration>

दूसरे आदेश से, आपके देव मशीन पर उपयोग किए जाने वाले स्थानीय App.config को स्थानीय (-l) स्विच और फ़ाइल नाम (-n) स्विच द्वारा निर्दिष्ट जनरेट किए गए कॉन्फ़िगरेशन से बदल दिया जाएगा।


2
जवाब के लिए Tnx, यह बुरा नहीं लगता है। लेकिन कुछ कमियां हैं, यह केवल 75 डाउनलोड दिखाता है (इस प्रकार यह परिपक्व नहीं है) और यह केवल .xls या .xlsx के साथ काम करता है। मैं वास्तव में सरल ऑपरेशन के लिए अभी तक एक और कस्टम दस्तावेज़ प्रारूप पर निर्भर नहीं करना चाहता हूं। मैं एक और अधिक मानक दृष्टिकोण की तलाश में था ...
oleksii 19

2
फेयर पॉइंट, हालांकि यह कहता है कि कोडप्लेक्स पर 194 डाउनलोड, xls एक स्प्रेडशीट है, शायद ही कोई कस्टम प्रारूप है, और मुझे तीन प्रमुख निवेश बैंकों के बारे में पता है, जिन्होंने इसे उपयोग के लिए अनुमोदित किया है, इसलिए यदि यह उनके लिए पर्याप्त है ... इसके अलावा, एक वर्तमान में अनुरोध की गई सुविधाओं में सेटिंग्स के लिए xml का उपयोग करना है। यह लगभग तैयार है, लेकिन मैं वैसे भी स्प्रेडशीट दृष्टिकोण पसंद करता हूं। प्रत्येक वातावरण के लिए हर सेटिंग को एक सारणीबद्ध दृश्य में देखना बहुत आसान है
डैनियल डायसन

अब हम configGen के एक संस्करण का परीक्षण करने के अंतिम चरण में हैं, जिसका उपयोग सादे पाठ फ़ाइलों को उत्पन्न करने के लिए किया जा सकता है, न कि केवल xml पर। इसलिए यदि आप पर्यावरण-विशिष्ट css, sql, javascript आदि उत्पन्न करना चाहते हैं, तो configGen साइट पर नजर रखें
डैनियल डायसन

समाधान के लिए धन्यवाद डैनियल, यह वही है जो मैं देख रहा था। मुझे इसे एक मौका और देना होगा।
भूपिंदर सिंह

10

रोमियो के समान दृष्टिकोण का उपयोग करते हुए, मैंने इसे विज़ुअल स्टूडियो 2010 के लिए अनुकूलित किया:

 <None Condition=" '$(Configuration)' == 'Debug' " Include="appDebug\App.config" />

 <None Condition=" '$(Configuration)' == 'Release' " Include="appRelease\App.config" />

यहां आपको अलग-अलग निर्देशिकाओं (AppDebug और appRelease) में दोनों App.config फ़ाइलों को रखने की आवश्यकता है। मैंने इसका परीक्षण किया और यह ठीक काम करता है!


3

मैं कॉन्फ़िगर फ़ाइलों में हेरफेर के लिए XmlPreprocess टूल का उपयोग कर रहा हूं । यह कई वातावरणों के लिए एक मैपिंग फ़ाइल का उपयोग कर रहा है (या आपके मामले में कई बिल्ड लक्ष्य)। आप एक्सेल द्वारा मैपिंग फ़ाइल को संपादित कर सकते हैं। यह इस्तेमाल में बहुत आसान है।


3

VisualStudio गैलरी से SlowCheetah और FastKoala बहुत अच्छे उपकरण लगते हैं जो इस समस्या से निपटने में मदद करते हैं।

हालाँकि, यदि आप व्यसनों से बचना चाहते हैं या उन सिद्धांतों का उपयोग करना चाहते हैं जो वे आपके निर्माण / एकीकरण प्रक्रियाओं में बड़े पैमाने पर लागू करते हैं तो इसे अपने msbuild * proj फ़ाइलों में जोड़ना एक आशुलिपि फिक्स है।

नोट: यह कमोबेश @ oleksii के उत्तर के क्रमांक 2 का पुनर्मिलन है।

.Exe और .dll प्रोजेक्ट्स के लिए यह काम करता है:

  <Target Name="TransformOnBuild" BeforeTargets="PrepareForBuild">
    <TransformXml Source="App_Config\app.Base.config" Transform="App_Config\app.$(Configuration).config" Destination="app.config" />
  </Target>

यह वेब परियोजनाओं के लिए काम करता है:

  <Target Name="TransformOnBuild" BeforeTargets="PrepareForBuild">
    <TransformXml Source="App_Config\Web.Base.config" Transform="App_Config\Web.$(Configuration).config" Destination="Web.config" />
  </Target>

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

याद रखें कि यदि आप App_Config फ़ोल्डर (या जो भी आप इसे कॉल करने के लिए चुनते हैं) बनाते हैं, तो विभिन्न मध्यवर्ती कॉन्फ़िगरेशन फ़ाइलों में बिल्ड एक्शन = कोई नहीं होना चाहिए, और आउटपुट निर्देशिका में कॉपी करें = कॉपी न करें।

यह दोनों विकल्पों को एक ब्लॉक में जोड़ता है। शर्तों के आधार पर उपयुक्त को निष्पादित किया जाता है। TransformXml कार्य को हालांकि पहले परिभाषित किया गया है:

<Project>
<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />
<Target Name="TransformOnBuild" BeforeTargets="PrepareForBuild">
    <TransformXml Condition="Exists('App_Config\app.Base.config')" Source="App_Config\app.Base.config" Transform="App_Config\app.$(Configuration).config" Destination="app.config" />
    <TransformXml Condition="Exists('App_Config\Web.Base.config')" Source="App_Config\Web.Base.config" Transform="App_Config\Web.$(Configuration).config" Destination="Web.config" />
</Target>


मैंने सिर्फ विजुअल स्टूडियो 2017 में यह कोशिश की और यह काम नहीं कर रहा है। गोली मार। मैं वास्तव में उम्मीद कर रहा था कि यह काम करेगा, क्योंकि यह लागू करना सबसे आसान लगता है।
ग्रेग बरगद्ट

ट्रांसफॉर्मएक्सएमएल कार्य को नमूनों में परिभाषित नहीं किया गया है। मैं एक प्रविष्टि जोड़ रहा हूं। आप इसे mycustom.targets फ़ाइल में परिभाषित कर सकते हैं जो आपके समाधान में आपके सभी लॉन्च प्रोजेक्ट में शामिल हो जाती है।
एनिओला

@GregBurghardt, क्या आप इसे अभी आज़माना चाहते हैं?
इनिओला

मैं शायद इसे आज़माऊंगा। मैंने Visual Studio के लिए कॉन्फ़िगर ट्रांसफ़ॉर्म प्लगइन स्थापित किया है, और यह वास्तव में अच्छी तरह से काम करता है। मुझे वास्तव में आश्चर्य होता है कि प्लगइन मूल रूप से आपके उत्तर को क्या करता है।
ग्रेग बरगद

ठीक है, मुझे पता है कि यह कैसे जाता है।
एनियोला

1

देखें कि क्या XDT (web.config) ट्रांसफॉर्म इंजन आपकी मदद कर सकता है। वर्तमान में यह केवल मूल रूप से वेब परियोजनाओं के लिए समर्थित है, लेकिन तकनीकी रूप से आपको अन्य एप्लिकेशन प्रकारों में इसका उपयोग करने से कुछ भी नहीं रोक रहा है। मैन्युअल रूप से प्रोजेक्ट फ़ाइलों को मैन्युअल रूप से संपादित करके XDT का उपयोग करने के बारे में कई गाइड हैं, लेकिन मुझे एक प्लगइन मिला जो महान काम करता है: https://visualstudiogallery.msdn.microsoft.com/579d3a78-3bdd-497c-bc21-aa6e6abbc859

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


इसका उत्तर अभी होना चाहिए। बस इसे वीएस 2017 पर आज़माया गया और यह एक आकर्षण की तरह काम करता है। आपको प्रोजेक्ट प्रकाशित करने की आवश्यकता नहीं है। बस इसका निर्माण करें। हमारे निरंतर एकीकरण निर्माण में उपयोग के लिए हमारी परीक्षण परियोजना के लिए महान काम करता है ताकि हम सेलेनियम परीक्षणों को बिना सिर के मोड में चला सकें, फिर भी स्थानीय रूप से वे ब्राउज़र खोलने के साथ चलते हैं। अगर मैं कर सकता था तो +1,000,000।
ग्रेग बर्गार्ड्ट

1

मैंने इस विषय को हल कर लिया है जो मुझे यहाँ मिला है: http://www.blackwasp.co.uk/SwitchConfig.aspx

संक्षेप में वे कहते हैं: "पोस्ट-बिल्ड ईवेंट जोड़कर: [...] हमें निम्नलिखित जोड़ने की आवश्यकता है:

if "Debug"=="$(ConfigurationName)" goto :nocopy
del "$(TargetPath).config"
copy "$(ProjectDir)\Release.config" "$(TargetPath).config"
:nocopy

अब तक की सबसे आसान विधि जो एक बहुत ही सरल और आवश्यक कार्य होनी चाहिए थी, जो अति-विचारकों द्वारा खराब कर दी गई थी! धन्यवाद जैनब्रो।
BoiseBaked

1

मैंने SlowCheetah के बारे में अच्छी बातें सुनी हैं, लेकिन यह काम करने में असमर्थ था। मैंने निम्नलिखित किया: एक विशिष्ट कॉन्फ़िगरेशन के लिए प्रत्येक में टैग जोड़ें।

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

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'UAT|AnyCPU'">
    <OutputPath>bin\UAT\</OutputPath>
    <PlatformTarget>AnyCPU</PlatformTarget>
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <AppConfig>App.UAT.config</AppConfig>
  </PropertyGroup>

यह बिल्ड कॉन्फ़िगरेशन के अनुसार app.config फ़ाइलों को बदलने के लिए एक और सुपर सरल तरीका लगता है। माइक, क्या आपने मानक डिबग और रिलीज़ कॉन्फ़िगरेशन के साथ परीक्षण किया था?
BoiseBaked

0

विकास और निर्माण आदि के लिए प्रबंधों पर कुछ शोध करने के बाद, मैंने अपना रोल करने का फैसला किया, मैंने इसे बिटकॉइन पर उपलब्ध कराया है: https://bitbucket.org/brightertools/contemplate/wiki/Home

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

उम्मीद है की यह मदद करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.