वेब कॉन्फिग ट्रांसफॉर्म काम नहीं कर रहा है


88

.NET MVC 3.0 एप्लिकेशन में मेरे पास निम्नलिखित कॉन्फ़िगरेशन है appSettings:

web.config

<appSettings>
<add key="SMTPHost" value="mail.domain.com"/>
    <add key="SMTPUsername" value="user@gmail.com"/>
    <add key="SMTPPort" value="25"/>
    <add key="SMTPPwd" value="mypassword"/>
    <add key="EmailFrom" value="notific@gmail.com"/>
</appSettings>

डीबगिंग के लिए, मेरे पास निम्नलिखित कॉन्फ़िगरेशन परिवर्तन परिभाषित हैं:

web.Debug.config

<appSettings>
    <add  key="SMTPPort" value="58" xdt:Transform="Replace" xdt:Locator="Match(key)" />
</appSettings>

और मैं डिबग मोड में एप्लिकेशन चलाता हूं, लेकिन मेरा एसएमटीपी पोर्ट अभी भी मूल्य ले रहा है web.config, नहीं web.Debug.config

क्या कोई सुझाव दे सकता है कि इस विन्यास में क्या गलत हो सकता है?

जवाबों:


156

Web.config ट्रांसफ़ॉर्म केवल एक प्रकाशित ऑपरेशन के भाग के रूप में लागू होते हैं।

यदि आप चाहते हैं कि यह एक app.configनिर्माण कार्य के हिस्से के रूप में किया जाए , तो आप SlowCheetah - XML ​​ट्रांसफ़ॉर्म विज़ुअल स्टूडियो प्लगइन का उपयोग कर सकते हैं:

http://visualstudiogallery.msdn.microsoft.com/69023d00-a4f9-4a34-a6cd-7e854ba318b5


1
बहुत बहुत धन्यवाद आपने मुझे बहुत समय बचाया।
HaBo

3
वाह मुझे इस जवाब को खोजने में 2 घंटे लग गए। इसे पोस्ट करने के लिए धन्यवाद, मैं अपने बालों को खींच रहा होगा।
मूंगफली

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

1
यह सुनिश्चित नहीं है कि @ komsky का उत्तर सरल और स्वच्छ समाधान प्रदान करते समय इसका उपयोग क्यों करें।
सेसाबा तोथ

1
SlowCheetah महान है, लेकिन अपने स्वयं के प्रलेखन से: "वेब परियोजनाओं के लिए जब आप अपने आवेदन को प्रकाशित या पैकेज करते हैं तो फाइलें बदल जाती हैं।" दूसरे शब्दों में, डिबगिंग करते समय नहीं।
डग

31

दृश्य स्टूडियो (2010 - 2019) दुर्भाग्य से सीधे समर्थन नहीं करता है जब आप डिबगिंग करते हैं, तो यह केवल प्रकाशन के लिए अभिप्रेत है - यहां तक ​​कि विस्तार के साथ भी धीमी गति से (चिह्नित उत्तर) यह मेरे लिए काम नहीं करता है (केवल ऐप का उपयोग करने वाली परियोजनाओं के लिए। इसके बजाय। web.config)।

ध्यान दें कि कोडप्रोजेक्ट में वर्णित एक वर्कअराउंड है

यह वर्णन करता है कि रूपांतरित संस्करण द्वारा वर्तमान web.config को अधिलेखित करने के लिए .msproj फ़ाइल को कैसे संशोधित किया जाए।

मैं पहले विकल्प 1 के रूप में उस वर्कअराउंड का वर्णन करूंगा , लेकिन मुझे हाल ही में एक और विकल्प 2 का पता चला है , जिसका उपयोग करना आसान है (ताकि आप चाहें तो सीधे विकल्प 2 पर स्क्रॉल कर सकें):


विकल्प 1: मैंने मूल कोडप्रोजेक्ट लेख (ऊपर दिए गए लिंक देखें) से लिए गए निर्देशों को जोड़ा है , क्योंकि स्क्रीन शॉट्स वहां पहले ही जा चुके हैं, और मैं पूरी जानकारी नहीं खोना चाहता:

जब आप विकसित हो रहे हैं और सिर्फ अपने स्थानीय वातावरण को डीबग कर रहे हैं, तो VS.Net कोई भी रूपांतरण नहीं करता है। लेकिन अगर आप चाहें तो ऐसा करने के लिए कुछ कदम उठाए जा सकते हैं।

  • सबसे पहले, वी.एस.नेट पर इच्छित कॉन्फ़िगरेशन बनाएं , जो डिबग डिफॉल्ट मानकर रिलीज़ करने के लिए पर्याप्त नहीं है।
  • अपने पर राइट क्लिक करें web.configऔर Add config Transform का चयन करें - यह आपके द्वारा परिभाषित प्रत्येक कॉन्फ़िगरेशन के लिए एक निर्भर रूपांतरण कॉन्फ़िगरेशन बनाएगा।
  • अब आप अपना नाम बदल सकते web.configहैं web.base.config
  • web.configअपने प्रोजेक्ट में जोड़ें यह उस में क्या है कोई फर्क नहीं पड़ता, क्योंकि यह हर बार जब हम एक निर्माण कर अधिलेखित हो जाएगा लेकिन हम इसे परियोजना इसलिए का हिस्सा चाहते VS.Net हमें नहीं देता है "आपका प्रोजेक्ट डीबगिंग के लिए कॉन्फ़िगर नहीं है" पॉप यूपी।
  • अपनी .csprojपरियोजना फ़ाइल को संपादित करें और TransformXmlआफ्टरबिल्ड लक्ष्य के लिए निम्न कार्य जोड़ें । यहाँ आप देख सकते हैं कि मैं web.base.configफ़ाइल का उपयोग करके रूपांतरण कर रहा हूँ web.[configuration].configऔर यह इसे इस तरह बचाएगा web.config। विवरण के लिए, कृपया इस Microsoft Q & A की जांच करें , और निर्देश के लिए कि बिल्ड को कैसे बढ़ाया जाए, वहां देखें

विकल्प 2:

इस उत्तर के आधार पर , मैंने एक सरल कंसोल ऐप, ट्रांसफॉर्मकॉन्फ़ ..exe (C # 6.0 सिंटैक्स में) विकसित किया है:

using System;
using System.Linq;
using Microsoft.Web.XmlTransform;

namespace TransformConfig
{

  class Program
  {
    static int Main(string[] args)
    {
        var myDocumentsFolder = $@"C:\Users\{Environment.UserName}\Documents";
        var myVsProjects = $@"{myDocumentsFolder}\Visual Studio 2015\Projects";

        string srcConfigFileName = "Web.config";
        string tgtConfigFileName = srcConfigFileName;
        string transformFileName = "Web.Debug.config";
        string basePath = myVsProjects + @"\";
        try
        {

            var numArgs = args?.Count() ?? 0;
            if (numArgs == 0 || args.Any(x=>x=="/?"))
            {
                Console.WriteLine("\nTransformConfig - Usage:");
                Console.WriteLine("\tTransformConfig.exe /d:tgtConfigFileName [/t:transformFileName [/s:srcConfigFileName][/b:basePath]]");
                Console.WriteLine($"\nIf 'basePath' is just a directory name, '{basePath}' is preceeded.");
                Console.WriteLine("\nTransformConfig - Example (inside PostBuild event):");
                Console.WriteLine("\t\"c:\\Tools\\TransformConfig.exe\"  /d:Web.config /t:Web.$(ConfigurationName).config /s:Web.Template.config /b:\"$(ProjectDir)\\\"");
                Environment.ExitCode = 1;
                return 1;
            }

            foreach (var a in args)
            {
                var param = a.Trim().Substring(3).TrimStart();
                switch (a.TrimStart().Substring(0,2).ToLowerInvariant())
                {
                    case "/d":
                        tgtConfigFileName = param ?? tgtConfigFileName;
                        break;
                    case "/t":
                        transformFileName = param ?? transformFileName;
                        break;
                    case "/b":
                        var isPath = (param ?? "").Contains("\\");
                        basePath = (isPath == false)
                                    ? $@"{myVsProjects}\" + param ?? ""
                                    : param;
                        break;
                    case "/s":
                        srcConfigFileName = param ?? srcConfigFileName;
                        break;
                    default:
                        break;
                }
            }
            basePath = System.IO.Path.GetFullPath(basePath);
            if (!basePath.EndsWith("\\")) basePath += "\\";
            if (tgtConfigFileName != srcConfigFileName)
            {
                System.IO.File.Copy(basePath + srcConfigFileName,
                                     basePath + tgtConfigFileName, true);
            }
            TransformConfig(basePath + tgtConfigFileName, basePath + transformFileName);
            Console.WriteLine($"TransformConfig - transformed '{basePath + tgtConfigFileName}' successfully using '{transformFileName}'.");
            Environment.ExitCode = 0;
            return 0;
        }
        catch (Exception ex)
        {
            var msg = $"{ex.Message}\nParameters:\n/d:{tgtConfigFileName}\n/t:{transformFileName}\n/s:{srcConfigFileName}\n/b:{basePath}";
            Console.WriteLine($"TransformConfig - Exception occurred: {msg}");
            Console.WriteLine($"TransformConfig - Processing aborted.");
            Environment.ExitCode = 2;
            return 2;
        }
    }

    public static void TransformConfig(string configFileName, string transformFileName)
    {
        var document = new XmlTransformableDocument();
        document.PreserveWhitespace = true;
        document.Load(configFileName);

        var transformation = new XmlTransformation(transformFileName);
        if (!transformation.Apply(document))
        {
            throw new Exception("Transformation Failed");
        }
        document.Save(configFileName);
    }

  }
}

सुनिश्चित करें कि आप "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.XmlTransform.dll"संदर्भ के रूप में DLL जोड़ते हैं (यह उदाहरण वीएस 2015 पर लागू होता है, पुराने संस्करणों के लिए v14.0पथ में उपयुक्त संस्करण संख्या, उदाहरण के लिए प्रतिस्थापित करें v11.0)।

के लिए दृश्य स्टूडियो 2017, पथ के लिए नामकरण स्कीमा बदल गया है: उदाहरण के लिए, उद्यम संस्करण के लिए यह यहाँ है: C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web
मुझे लगता है कि पेशेवर संस्करण के लिए आपको Enterpriseरास्ते से बदलने की आवश्यकता है Professional। आप पूर्वावलोकन संस्करण का उपयोग कर रहे हैं, इसके साथ ही बदलने के 2017द्वारा Preview

यहाँ एक अवलोकन कैसे पथ (यदि आप एंटरप्राइज़ संस्करण नहीं है आप को बदलने के लिए आवश्यकता हो सकती है दृश्य स्टूडियो के विभिन्न संस्करणों के लिए बदल गया है है Enterpriseद्वारा Professionalरास्ते में):

वीएस वर्जन         पाथ (फॉर Microsoft.Web.XmlTransform.dll)
2015                   C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web
2017                   C:\Program Files (x86)\Microsoft Visual Studio\2017\
                          Enterprise\MSBuild\Microsoft\VisualStudio\v15.0\Web
2019                  C:\Program Files (x86)\Microsoft Visual Studio\2019\
                          Enterprise\MSBuild\Microsoft\VisualStudio\v16.0\Web

इसे संकलित करें और .exe फ़ाइल को एक निर्देशिका में रखें, जैसे C:\MyTools\

उपयोग: आप इसे अपने पोस्ट बिल्ड ईवेंट ( प्रोजेक्ट प्रॉपर्टीज में , बिल्ड ईवेंट चुनें , फिर पोस्ट-बिल्ड इवेंट कमांड लाइन संपादित करें ) में उपयोग कर सकते हैं। कमांडलाइन पैरामीटर हैं (उदाहरण):

"C: \ MyTools \ TransformConfig.Exe" /d:Web.config /t:Web.$(ConfigurationName).config /s :Web.Template.config / b: "$ (ProjectDir) \"

अर्थात पहले विन्यास फाइल का नाम, उसके बाद ट्रांसफॉर्म फाइल, उसके बाद एक वैकल्पिक टेम्प्लेट कॉन्फिगर, उसके बाद दोनों फाइलों के लिए आपके प्रोजेक्ट का रास्ता।

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

बस मूल Web.config की प्रतिलिपि बनाकर टेम्पलेट बनाएं और इसे Web.Template.config नाम दें।

ध्यान दें:

  • यदि आप पसंद करते हैं, तो आप TransformConfig.exeफ़ाइल को ऊपर बताए गए विज़ुअल स्टूडियो पथ पर भी कॉपी कर सकते हैं, Microsoft.Web.XmlTransform.dllजहाँ आपके सभी प्रोजेक्ट्स में रहते हैं और इसका संदर्भ देते हैं, जहाँ आपको अपने कॉन्फ़िगरेशन को बदलने की आवश्यकता है।

  • आप में से जो सोच रहे हैं कि मैंने Environment.ExitCode = x;असाइनमेंट क्यों जोड़े : मेन से इंट को वापस करने से बिल्ड इवेंट में मदद नहीं मिली। यहां देखें विवरण

  • यदि आप अपनी परियोजना को प्रकाशित कर रहे हैं और आप Web.Template.config का उपयोग कर रहे हैं, तो सुनिश्चित करें कि आपने प्रकाशित करने से पहले अपने समाधान पर सही कॉन्फ़िगरेशन (आमतौर पर रिलीज़) के साथ पुनर्निर्माण किया था । कारण यह है कि Web.Config डीबगिंग के दौरान अधिलेखित हो जाता है और आप अन्यथा गलत फ़ाइल को परिवर्तित कर सकते हैं।


1
ऐसा लगता है कि CodeProject पोस्ट पक्की है। उन्होंने अपने कोड नमूनों के लिए स्क्रीनशॉट का उपयोग किया, और अब अपने ब्लॉग के डाउन होने के बाद, वे इतिहास से हार गए हैं।
एरिक लॉयड

3
हां, दुर्भाग्य से स्क्रीनशॉट्स चले गए हैं। लेकिन कम से कम लेख पाठ अभी भी वहाँ है, दृष्टिकोण का वर्णन करना। मैंने इसे खोने से बचने के लिए अपने उत्तर में पाठ विवरण जोड़ा है।
मैट

1
सच है, शायद कोई लेखक जेम्स कोलमैन से संपर्क करके इसे ठीक करने के लिए कोडप्रोजेक्ट पर संपर्क करने की कोशिश कर सकता है। यकीन नहीं होता कि वह अभी भी वहाँ सक्रिय है, हालाँकि। @ThomasTeilmann
मैट

मुझे लगता है कि खोए स्क्रीनशॉट में ऐसा ही हो सकता है। एक ही मूल परिणाम प्राप्त करने के लिए लगता है। stackoverflow.com/a/6437192/1003916
user1003916

22

आपके प्रश्न का उत्तर देना सरल नहीं है, क्योंकि इससे एक समस्या उत्पन्न होती है - यदि आप Web.config को Web.debug.config से बदलना चाहते हैं - जहाँ परिवर्तन प्रभाव संग्रहीत किया जाना चाहिए? Web.config में ही? यह परिवर्तन स्रोत फ़ाइल को अधिलेखित कर देगा! शायद इसीलिए Visual Studio बिल्ड के दौरान ट्रांसफ़ॉर्मेशन नहीं करता है।

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

  1. कॉन्फ़िगरेशन के लिए अपने कॉन्फ़िगरेशन परिवर्तन बनाएँ (डीबग, रिलीज़, आदि)
  2. Web.configफ़ाइल का नाम बदलें Web.base.config- परिवर्तनों को तदनुसार स्वचालित रूप से नाम बदलना चाहिए ( Web.base.Debug.config, आदि)
  3. अपने प्रोजेक्ट फ़ोल्डर में निम्नलिखित ट्रांसवर्ल्डवेबफोन.प्रो एक्सएमएल फ़ाइल जोड़ें :
<?xml version="1.0" encoding="utf-8" ?>
<Project ToolsVersion="4.0" DefaultTargets="TransformWebConfig" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll" />
  <Target Name="TransformWebConfig">
    <TransformXml Source="Web.base.config" Transform="Web.base.$(CurrentConfig).config" Destination="Web.config" />
  </Target>
</Project>
  1. अपनी प्रोजेक्ट संपत्तियों पर नेविगेट करें, बिल्ड इवेंट चुनें और पोस्ट-बिल्ड इवेंट कमांड लाइन में निम्नलिखित सामग्री जोड़ें :
@if exist "%ProgramFiles(x86)%\MSBuild\12.0\bin" set PATH=%ProgramFiles(x86)%\MSBuild\12.0\bin;%PATH%
msbuild $(ProjectDir)transformWebConfig.proj /t:TransformWebConfig /p:CurrentConfig=$(ConfigurationName) /p:TargetProjectName=$(TargetPath)

अब, जब आप अपना समाधान बनाते हैं, तो Web.config फ़ाइल सक्रिय कॉन्फ़िगरेशन के लिए मान्य परिवर्तनों के साथ बनाई जाएगी।


सबसे साफ और सबसे अच्छा जवाब। कुछ प्रश्न: 1. एक्सएमएल सत्यापन क्यों कहता है कि ट्रांसफॉर्मएक्सएमएल एलमेंट लक्ष्य तत्व के भीतर अमान्य है? (बिल्ड काम करता है BTW)। 2. अब जब यह वास्तविक Web.Config उत्पन्न करता है, तो मैं अभी भी परियोजना में Web.Config जोड़ता हूं। अब किसी भी समय मैं डीबग / रिलीज़ के बीच स्विच करता हूँ, web.config बदल जाएगा, लेकिन मैं जरूरी नहीं कि स्रोत रेपो में हर समय यह करना चाहता हूं।
सेसाबा तोथ

1. वास्तव में यह नहीं बता सकता कि वीएस इस XML को स्कीमा के साथ कैसे मान्य करता है, लेकिन यह चेतावनी आम है, इसलिए आप इसे अनदेखा कर सकते हैं। 2. यह निर्भर करता है कि आप किस रेपो का उपयोग कर रहे हैं, लेकिन आप उदाहरण के लिए git.ignore फ़ाइल प्रविष्टि का उपयोग कर सकते हैं।
कोम्स्की

4
यह मेरे लिए अच्छी तरह से काम करता है - बस बिल्ड-ईवेंट में 12 और वर्तमान संस्करण में प्रोज फाइल को बदल दिया है। पोस्ट-बिल्ड ईवेंट के लिए मैंने उपयोग किया: '"$(MSBuildBinPath)\msbuild.exe" $(ProjectDir)TransformWebConfig.proj /t:TransformWebConfig /p:CurrentConfig=$(ConfigurationName) /p:TargetProjectName=$(TargetPath) और .proj फ़ाइल में अपडेट v12.0किया v14.0गया।
जोवी

1
VS 2017 के लिए हर 12.0को संशोधित करें14.0
Csaba Toth

1
1) उत्पन्न web.config को वेब प्रोजेक्ट में शामिल करना न भूलें, या, यह प्रकाशित होने के बाद लक्ष्य फ़ोल्डर में कॉपी नहीं होगा। 2) अगर इन दो फाइलों के बिल्ड सर्वर में कमी है, तो बस उन्हें "Microsoft.Web.Publishing.Tasks" सर्वर पर कॉपी करें, "Microsoft.Web.XmlTransform"
phiree

8

वीएस 2017 के लिए मुझे यहां जवाब मिला कि यह सुनिश्चित नहीं है कि किसी ने इसे ऊपर संदर्भित नहीं किया है क्योंकि यह एक बहुत लोकप्रिय समाधान प्रतीत होता है। बहुत आसान भी। सुनिश्चित करें कि आप वीआर 2017 और सभी संस्करणों में काम करने के लिए Mar5 2019 पर IOrlandoni की टिप्पणी देखें।

मूल रूप से इसकी एक दो स्टेपर है। सबसे पहले, आप .csproj फ़ाइल को संपादित करते हैं, नीचे दिए गए कोड को जोड़ते हैं। दूसरा, आप एक नया web.base.config कॉन्फ़िगरेशन बनाते हैं और मौजूदा web.config को कॉपी करते हैं। ऐसा करने के बाद कोई भी बिल्ड आपके वांछित परिवर्तन के साथ आपके web.config को अधिलेखित कर देगा।

<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\WebApplications\Microsoft.WebApplication.targets" />
<Target Name="BeforeBuild">
    <TransformXml Source="Web.Base.config" 
        Transform="Web.$(Configuration).config" Destination="Web.config" />
</Target>  

यह शायद सबसे अच्छा जवाब है, लेकिन IMO यह एक चाल याद आ रही है। आप को बदलते हैं Web.configसे Contentकरने के लिए Noneतो आप उपयोग कर सकते हैं Source="Web.config" Destination="$(TargetPath).config"(इस परियोजना के कुछ प्रकार के लिए या शायद Destination="$(TargetDir)Web.config")। मैंने भी ट्रांसफ़ॉर्म को स्थानांतरित कर दिया है AfterBuild, क्योंकि अब फ़ाइलों की प्रतिलिपि बनाने से पहले इसे करने की आवश्यकता नहीं है।
पीटर टेलर

ठीक है, वास्तव में यह काम नहीं करता है क्योंकि किसी कारण से मैं इसे चलाने के लिए कॉन्फ़िगर नहीं कर सकता हूं bin
पीटर टेलर

4

आपके तात्कालिक प्रश्न का उत्तर दिया गया है - स्पष्टीकरण यह है कि परिवर्तन प्रकाशित पर लागू होता है, बिल्ड पर नहीं।

हालांकि, मुझे लगता है कि यह इस बात पर समाधान नहीं पेश करता है कि आप क्या करना चाहते हैं।

मैं अब कुछ दिनों से इस सटीक समस्या से जूझ रहा हूं, web.config को साफ रखने का एक तरीका ढूंढ रहा हूं और सभी कुंजियों को सेट करता हूं जो संबंधित ट्रांसफ़ॉर्म फ़ाइलों में पर्यावरण के आधार पर बदलती हैं। मेरा निष्कर्ष है कि सबसे आसान और सबसे स्थिर समाधान मूल web.config में डिबग मानों का उपयोग करना है, इस तरह वे हमेशा मौजूद होते हैं जब आप Visual Studio में डीबग रन करते हैं।

फिर उन विभिन्न वातावरणों के लिए रूपांतरण बनाएँ जिन्हें आप प्रकाशित करना चाहते हैं - परीक्षण, एकीकरण, उत्पादन - जो भी आपके पास है। अब वेब पर निर्मित कार्यक्षमता को प्रकाशित करने के लिए web.config फ़ाइलों को इसके लिए पर्याप्त होगा। SlowCheetah या संपादन बिल्ड घटनाओं और न ही परियोजना फ़ाइलों के लिए कोई ज़रूरत नहीं है। यदि आपके पास केवल वेब परियोजनाएं हैं

क्या आप चाहते हैं, आपके पास आपके समाधान में web.debug.config फ़ाइल भी हो सकती है, बस विकास पर्यावरण से संबंधित सभी मूल्यों के साथ एक अलग फ़ाइल रखने के लिए। इसमें टिप्पणी करना सुनिश्चित करें कि विजुअल स्टूडियो में चलने पर मान लागू नहीं होते हैं, हालांकि यदि कोई व्यक्ति उस उद्देश्य के लिए इसका उपयोग करने का प्रयास करता है!


1

उपयोग ऑक्टोपस तैनात (सामुदायिक संस्करण नि: शुल्क है) और यह परिणत करते हैं web.configआप के लिए। कदम:

  1. अपने वेब एप्लिकेशन को तैनात करने के लिए ऑक्टोपस सेट करें
  2. सुनिश्चित करें कि आपके Web.Release.configपास आपकी मुख्य फ़ाइल की तरह ही Build Actionसंपत्ति सेट है ।Contentweb.config

बस! ऑक्टोपस बिना किसी विशेष कॉन्फ़िगरेशन के बाकी काम करेगा। एक डिफ़ॉल्ट IIS वेब साइट परिनियोजित इसे बॉक्स से बाहर कर देगा:यहाँ छवि विवरण दर्ज करें


नंबर 2 कुंजी है :)
रेजा

0

स्पष्ट रूप से विजुअल स्टूडियो 2015 के लिए एक एक्सटेंशन है

https://visualstudiogallery.msdn.microsoft.com/05bb50e3-c971-4613-9379-acae2cfe6f9e

यह पैकेज बिल्ड कॉन्फिगरेशन के आधार पर आपको अपने ऐप.कॉन्फ़िग या किसी अन्य XML फ़ाइल को बदलने में सक्षम बनाता है


SlowCheeta एक नया नहीं है। यह लंबे समय से है। उनकी 1.1 रिलीज
9/8/2011

@HaBo आपके ध्यान के लिए धन्यवाद, मैंने newवाक्य के रूप में दुनिया को हटा दिया ।
अमीर अस्तेह

0

हाल ही में मुझे .NET Framework 2.0 पर आधारित एक पुराने web.config फ़ाइल के साथ भी यही समस्या थी । समाधान केवल web.config के नामस्थान ( xmlns) को हटा दिया गया था कॉन्फ़िगरेशन रूट नोड में एटिब्यूट ) को :

इससे पहले: <configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">

उपरांत: <configuration>

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