বেশ কয়েকটি বিল্ড কনফিগারেশনের জন্য কীভাবে আলাদা অ্যাপকনফিগ নির্বাচন করবেন


115

আমার কাছে একটি dll- প্রজেক্ট রয়েছে যার মধ্যে এমএসটিস্ট ইন্টিগ্রেশন পরীক্ষা রয়েছে। আমার মেশিনে পরীক্ষাগুলি পাস হয় এবং আমি সিআই সার্ভারেও একই ঘটনা ঘটতে চাই (আমি টিমসিটি ব্যবহার করি)। তবে পরীক্ষাগুলি ব্যর্থ হয়, কারণ আমার অ্যাপ্লিকেশন কনফিগে কিছু সেটিংস মুছে ফেলা দরকার। এ কারণেই আমি ভাবছিলাম যে একটি পৃথক দ্বিতীয় app.config ফাইল রয়েছে যা সিআই সার্ভারের জন্য সেটিংস ধারণ করবে।

তাই আমি চাই

/ SLN
 / PROJ
  app.config (আমি মনে করি এটি ভিএস দ্বারা প্রয়োজনীয়)
  অ্যাপ্লিকেশন.রিলেজ.কনফিগ (এটি একটি স্বতন্ত্র স্বতন্ত্র কনফিগারেশন ফাইল)

সুতরাং আমি যদি সিআই-তে বিল্ড কনফিগারেশনে রিলিজ কনফিগারেশনটি নির্বাচন করি তবে আমি অ্যাপ্লিকেশনটি ব্যবহার করতে চাই app

সমস্যা
এটি সরল .DL টাইপ প্রকল্পের জন্য সোজা বলে মনে হচ্ছে না। ওয়েব প্রকল্পগুলির জন্য, আমি ওয়েব কনফিগারেশন রূপান্তর করতে পারি। আমি একটি হ্যাক পেয়েছি কীভাবে একটি ডেল প্রকার প্রকল্পের জন্য এই রূপান্তরগুলি করতে হয়, তবে আমি হ্যাকের একটি বড় অনুরাগী নই।

প্রশ্ন।
নেট প্রকল্পের বিল্ড কনফিগারেশন (যেমন ডিবাগ, রিলিজ, ...) এর উপর নির্ভর করে app.config ফাইলগুলিতে টুইঙ্ক করার জন্য একটি স্ট্যান্ডার্ড পদ্ধতির কী?

উত্তর:


154

স্লোচিথাহ প্লাগইন ব্যবহার করুন । আরও বিকল্প এবং স্লোচিথ ​​ব্যবহার কীভাবে করবেন তার বিশদ জন্য পড়তে থাকুন।

আপনি ইতিমধ্যে লক্ষ্য করেছেন, লাইব্রেরি টাইপ (.dll) প্রকল্পের জন্য আলাদা কনফিগার ফাইল ব্যবহার করার কোনও ডিফল্ট এবং সহজ উপায় নেই । কারণটি হ'ল বর্তমান চিন্তাভাবনা: "আপনার দরকার নেই"! ফ্রেমওয়ার্ক বিকাশকারীগণ নির্বাহযোগ্য ফাইলের জন্য আপনার কনফিগারেশন প্রয়োজন গণ্য করুন: এটি কনসোল, ডেস্কটপ, ওয়েব, মোবাইল অ্যাপ্লিকেশন বা অন্য কিছু হোক। আপনি যদি কোনও ডিলের জন্য কনফিগারেশন সরবরাহ করা শুরু করেন তবে আপনি এমন কোনও কিছু দিয়ে শেষ করতে পারেন যা আমি কনফিগারকে নরক বলতে পারি । আপনি আর বুঝতে পারবেন না (সহজেই) কেন এবং কেন এই ভেরিয়েবলগুলির এমন অদ্ভুত মানগুলি কোথাও থেকে আপাতদৃষ্টিতে আসছে।

"ধরুন", - আপনি বলতে পারেন, "তবে আমার একীকরণ / ইউনিট পরীক্ষার জন্য এটি আমার প্রয়োজন, এবং এটি একটি গ্রন্থাগার!"! এবং এটি সত্য এবং এটিই আপনি করতে পারেন (কেবল একটি বেছে নিন, মিশ্রণ করবেন না):

1. স্লোচিটঃ বর্তমান কনফিগারেশন ফাইলকে রূপান্তর করে

আপনি স্লোলচিটা ইনস্টল করতে পারেন - একটি ভিজ্যুয়াল স্টুডিও প্লাগ-ইন যা আপনার জন্য সমস্ত নিম্ন স্তরের এক্সএমএল পোকিং (বা রূপান্তর) করে। এটি যেভাবে কাজ করে, সংক্ষেপে:

  • স্লোচিঠি ইনস্টল করুন এবং ভিজ্যুয়াল স্টুডিও পুনরায় চালু করুন (ভিজ্যুয়াল স্টুডিও> সরঞ্জামসমূহ> এক্সটেনশানস এবং আপডেট ...> অনলাইন> ভিজ্যুয়াল স্টুডিও গ্যালারী> "ধীর চিতা" অনুসন্ধান করুন)
  • আপনার সমাধান কনফিগারেশনগুলি সংজ্ঞায়িত করুন ( ডিফল্ট হিসাবে ডিবাগ এবং রিলিজ রয়েছে), আপনি আরও যুক্ত করতে পারেন ( সমাধান এক্সপ্লোরার > কনফিগারেশন ম্যানেজারে সমাধানটিতে ডান ক্লিক করুন ... > সক্রিয় সমাধান কনফিগারেশন > নতুন ...
  • প্রয়োজনে একটি কনফিগার ফাইল যুক্ত করুন
  • কনফিগারেশন ফাইল> অ্যাড ট্রান্সফর্ম এ ডান ক্লিক করুন
    • এটি রূপান্তর ফাইল তৈরি করবে - আপনার কনফিগারেশনের জন্য একটি one
    • ফাইলগুলি ইনজেক্টর / মিউটর হিসাবে কাজ করে, তারা মূল কনফিগার ফাইলে প্রয়োজনীয় এক্সএমএল কোড খুঁজে পায় এবং নতুন লাইন ইনজেক্ট করে বা প্রয়োজনীয় মান পরিবর্তন করে, আপনি যা যা করতে বলুন তাই করুন

2. .proj ফাইল সহ ফিডল - সম্পূর্ণ নতুন কনফিগার ফাইলটির অনুলিপি-নামকরণ করে

মূলত এখান থেকে তোলা । এটি একটি কাস্টম এমএসবিল্ড টাস্ক যা আপনি ভিজ্যুয়াল স্টুডিও .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ফোল্ডার থেকে কনফিগার ফাইলটি বেছে নেবে এবং আউটপুট ডিরেক্টরিতে এটির অনুলিপি-নামকরণ করবে। সুতরাং আপনার যদি প্যাটার্নপিএ.স্টেস্ট.ইন্টিগ্রেশন প্রকল্প এবং একটি ডিবাগ কনফিগারেশন নির্বাচিত থাকে তবে বিল্ডের পরে আউটপুট ফোল্ডারে আপনি একটি প্যাটার্নপিএ.স্টেস্ট.ইন্টেগ্রেশন.ডিলসিএনফিগ ফাইল পাবেন যা অনুলিপি করে 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>

ভিজ্যুয়াল স্টুডিওতে আপনার এমন কিছু থাকতে পারে

প্রকল্প কাঠামো

৩. ভিজ্যুয়াল স্টুডিওর বাইরে স্ক্রিপ্টিং ফাইলগুলি ব্যবহার করুন

প্রতিটি বিল্ড টুল (যেমন ন্যান্ট , এমএসবিল্ড ) কনফিগারেশনের উপর নির্ভর করে কনফিগার ফাইল ফাইল রূপান্তর করতে সক্ষমতা সরবরাহ করবে। আপনি যদি কোনও বিল্ড মেশিনে আপনার সমাধানটি তৈরি করেন তবে এটি কার্যকর হয়, যেখানে পণ্যটি মুক্তির জন্য কীভাবে এবং কীভাবে প্রস্তুত করা যায় তার উপর আপনার আরও নিয়ন্ত্রণ থাকতে হবে।

উদাহরণস্বরূপ আপনি কোনও কনফিগার ফাইলকে রূপান্তর করতে ওয়েব প্রকাশনা ডেলির কাজটি ব্যবহার করতে পারেন

<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>

আপনার দ্বিতীয় সমাধানটি কার্যকর কাজ করে তবে ওয়েব প্রকল্পগুলি প্রকাশের জন্য নয়। একটি এএসপি.এনইটি প্রকল্প প্রকাশের পরে, মূল ওয়েবকনফিগ প্রকাশিত হয়।
মাসউদ খারী

3
@ মাসউদখারি আপনাকে এই লক্ষ্যটি প্রকাশের লক্ষ্য হিসাবে ডাকা হয়েছে তা নিশ্চিত করা দরকার। আপনি যখন একটি প্রকল্প প্রকাশ করেন তখন একটি পৃথক বিল্ড লক্ষ্য বলা হয়, এটি ডিফল্ট AfterBuildটার্গেট দ্বারা কল নাও করতে পারে । সাধারণ সংকলনের সময় AfterBuildলক্ষ্যটিকে ডিফল্টরূপে ডাকা হয়। প্রকাশের মামলার জন্য দ্রুত সমাধানের ব্যবস্থা থাকতে হবে
ওলেক্সি

1
আপনার দ্বিতীয় পদ্ধতি (কিন্ডা) ব্যবহার করেছেন। প্রকল্পের বৈশিষ্ট্য গিয়েছিলাম এবং সম্পাদিত BeforeBuild কপি করতে App.<Target>.configউপর App.configমধ্যে প্রকল্পের Dir না আউটপুট Dir।
15-22

@oleksii আপনি ঠিক বলেছেন তবে আমার ওয়েব প্রকাশের প্রক্রিয়াটি যে লক্ষ্যটি ব্যবহার করছে তা এখনও আমি খুঁজে পাইনি (ভিজ্যুয়াল স্টুডিও 2013 এ)।
মাসউদ খারি

1
আমি দ্বিতীয় পদ্ধতিটি ব্যবহার করছি, তবে ফাইলটি মুছার আগে উপস্থিত রয়েছে তা নিশ্চিত করার জন্য আফটার বিল্ড টার্গেটে একটি শর্ত যুক্ত করা দরকার। আমার একটি ডিবাগ বিল্ড কনফিগারেশন রয়েছে, যা মূলত কেবলমাত্র ডিফল্ট অ্যাপকনফিগ ফাইলটি ব্যবহার করে, তবে আমার কোনও অ্যাপ নেই। ডেগুগকনফিগ ছিল, যার অর্থ বিল্ড স্টেপ ব্যর্থ হবে। আমি শুধু যোগ Condition="Exists('$(ProjectDir)App.$(Configuration).config')"
দর্শকদের

23

আপনি নিম্নলিখিত পদ্ধতির চেষ্টা করতে পারেন:

  1. সমাধান এক্সপ্লোরারে প্রকল্পটিতে ডান ক্লিক করুন এবং আনলোড প্রকল্পটি নির্বাচন করুন ।
  2. প্রকল্পটি লোড করা হবে। প্রকল্পে আবার ডান ক্লিক করুন এবং << আপনারপ্রজেক্টনাম> .csproj সম্পাদনা করুন নির্বাচন করুন
  3. এখন আপনি ভিজ্যুয়াল স্টুডিওতে প্রকল্প ফাইল সম্পাদনা করতে পারেন।
  4. আপনার অ্যাপ্লিকেশন কনফিগারেশন ফাইলটি অন্তর্ভুক্ত করা হয়েছে এমন জায়গায় * .csproj ফাইলটি সন্ধান করুন। এটির মতো দেখাবে:
    <ItemGroup>
        <কিছুই অন্তর্ভুক্ত নয় = "App.config" />
    </ ItemGroup>
  1. নিম্নলিখিতগুলি সহ এই লাইনগুলি প্রতিস্থাপন করুন:
    <আইটেমগ্রুপ শর্ত = "'$ (কনফিগারেশন)' == 'ডিবাগ'">
        <কিছুই অন্তর্ভুক্ত নয় = "অ্যাপ্লিকেশন। ডেগুগকনফিগ" />
    </ ItemGroup>

    <আইটেমগ্রুপ শর্ত = "'$ (কনফিগারেশন)' == 'রিলিজ'">
        <কিছুই অন্তর্ভুক্ত নয় = "অ্যাপ্লিকেশন। রিলিজ.কনফিগ" />
    </ ItemGroup>

আমি app.configফাইলগুলির কাছে এই পদ্ধতির চেষ্টা করিনি , তবে ভিজ্যুয়াল স্টুডিও প্রকল্পগুলির অন্যান্য আইটেমগুলির সাথে এটি দুর্দান্ত কাজ করেছে। আপনি নিজের পছন্দমতো কোনওভাবে বিল্ড প্রক্রিয়াটি কাস্টমাইজ করতে পারেন। যাইহোক, আমাকে ফলাফলটি জানিয়ে দিন।


উত্তরের জন্য টিএনএক্স, তবে এটি অ্যাপকনফাইগের সাথে কাজ করে না। ভিএসের বাধ্যতামূলক প্রয়োজন app.configএবং আমি ভিএস বিল্ড বা টিমসিটি ভিএস স্লান বিল্ড রানার ব্যবহার করলে রিলিজ কনফিগারেশন প্রয়োগ করছে না।
ওলেক্সি

2
এটি কীভাবে করবেন তা এখানে ব্যাখ্যা করেছে: app.debug.config app.release.config সক্ষম করুন
গ্যাব্রিয়েলিজালো

1
এই উত্তরে এত বেশি ভোট কেন? আমি চেষ্টা করেছিলাম এবং এটি কাজ করে না। প্রকৃতপক্ষে উভয় ডিবাগ এবং রিলিজ মোডে কোনও App.config ফাইল নেই এবং সুতরাং, আউটপুট ফোল্ডারে কোনও সম্পর্কিত ফাইল নেই। App.Debug.config এবং App.Relays.config ফাইলগুলির ভিজ্যুয়াল স্টুডিওর কোনও অর্থ নেই।
মার্কাস পার্কার

এটি কাজ করে না: .csproj খোলা যাবে না, ত্রুটি বার্তা "লক্ষ্য উপাদানগুলির বাইরের উপাদানগুলিতে অবশ্যই থাকতে হবে: অন্তর্ভুক্ত করুন, আপডেট করুন বা সরান"
এলো

12

আপনার কনফিগারেশন বিবেচনা করা উচিত । এটি এই উদ্দেশ্যে তৈরি করা হয়েছিল। এটি প্রতিটি স্থাপনার মেশিনের জন্য একটি টেমপ্লেট ফাইল এবং সেটিংস ফাইলের উপর ভিত্তি করে একটি কনফিগার ফাইল তৈরি করে। আমি জানি যে এটি আপনার প্রশ্নের উত্তর বিশেষভাবে দেয় না, তবে এটি আপনার সমস্যার উত্তর দিতে পারে।

সুতরাং ডিবাগ, রিলিজ ইত্যাদির পরিবর্তে আপনার টেস্ট, ইউএটি, উত্পাদন ইত্যাদি থাকতে পারে আপনার প্রতিটি বিকাশকারী মেশিনের জন্য আলাদা আলাদা সেটিংসও থাকতে পারে, যাতে আপনি আপনার ডেভ মেশিনের জন্য নির্দিষ্ট একটি কনফিগার তৈরি করতে পারেন এবং অন্য কারও কারও মোতায়েনের প্রভাব ছাড়াই এটি পরিবর্তন করতে পারেন it ।

ব্যবহারের উদাহরণ হতে পারে ...

<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 ফাইলের মধ্যে নির্ধারিত, আউটপুট ডিরেক্টরি placed (সলিউশনডির) কনফিগার

.../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>

দ্বিতীয় কমান্ড থেকে, আপনার ডেভ মেশিনে ব্যবহৃত স্থানীয় অ্যাপকনফিগ স্থানীয় (-l) স্যুইচ এবং ফাইলের নাম (-n) স্যুইচ দ্বারা উল্লিখিত উত্পন্ন কনফিগার দ্বারা প্রতিস্থাপন করা হবে।


2
উত্তরের জন্য টিএনএক্স, এটি দেখতে খারাপ লাগে না। তবে কিছু ত্রুটি রয়েছে, এটি কেবলমাত্র 75 টি ডাউনলোড দেখায় (সুতরাং এটি পরিপক্ক নয়) এবং এটি কেবলমাত্র xx বা .xlsx নিয়ে কাজ করে। আমি সাধারণ অপারেশনের জন্য আর একটি কাস্টম নথি বিন্যাসের উপর নির্ভর করতে চাই না। আমি আরও একটি স্ট্যান্ডার্ড পদ্ধতির সন্ধান
করছিলাম

2
ফেয়ার পয়েন্ট, যদিও এটি কোডপ্লেক্সে 194 টি ডাউনলোড বলেছে, এক্সএলএস একটি স্প্রেডশিট, খুব কমই কাস্টম ফর্ম্যাট এবং আমি তিনটি মেজর ইনভেস্টমেন্ট ব্যাংককে জানি যা এটি ব্যবহারের জন্য অনুমোদিত হয়েছে, সুতরাং এটি যদি তাদের পক্ষে যথেষ্ট ভাল হয় তবে ... বর্তমানে অনুরোধ করা বৈশিষ্ট্যগুলির মধ্যে সেটিংসের জন্য এক্সএমএল ব্যবহার করা। এটি প্রায় প্রস্তুত, তবে আমি যাইহোক স্প্রেডশিট পদ্ধতির পছন্দ করি। প্রতিটি পরিবেশের জন্য প্রতিটি সেটিংটি একটি সারণী দর্শনে দেখতে অনেক সহজ
ড্যানিয়েল ডায়সন

আমরা এখন কনফিগার জেনের এমন একটি সংস্করণ পরীক্ষা করার চূড়ান্ত পর্যায়ে রয়েছি যা কেবল এক্সএমএল নয়, প্লেইন টেক্সট ফাইল তৈরি করতে ব্যবহার করা যেতে পারে। সুতরাং আপনি যদি পরিবেশ-নির্দিষ্ট সিএসএস, এসকিউএল, জাভাস্ক্রিপ্ট ইত্যাদি তৈরি করতে চান তবে কনফিগারগেন সাইটে নজর রাখুন
ড্যানিয়েল ডায়সন

সমাধানের জন্য ড্যানিয়েলকে ধন্যবাদ, আমি ঠিক এটিই খুঁজছিলাম। আমি একবার চেষ্টা করবো।
ভূপিন্দর সিং

10

রোমিওর মতো পদ্ধতির ব্যবহার করে, আমি এটি ভিজ্যুয়াল স্টুডিও 2010 এর সাথে অভিযোজিত করেছি:

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

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

এখানে আপনার উভয় অ্যাপকনফাইগ ফাইলকে বিভিন্ন ডিরেক্টরিতে রাখতে হবে (অ্যাপডিব্যাগ এবং অ্যাপ্লিকেশন)। আমি এটি পরীক্ষা করেছি এবং এটি ঠিক কাজ করে!


3

আমি কনফিগার ফাইল ম্যানিপুলেশন জন্য এক্সএমএলপ্রসেস সরঞ্জাম ব্যবহার করছি । এটি একাধিক পরিবেশের জন্য (বা আপনার ক্ষেত্রে একাধিক বিল্ড লক্ষ্যবস্তু) জন্য একটি ম্যাপিং ফাইল ব্যবহার করছে। আপনি এক্সেল দ্বারা ম্যাপিং ফাইল সম্পাদনা করতে পারেন। এটা ব্যবহার করা খুব সহজ।


3

ভিজ্যুয়াল স্টুডিও গ্যালারী থেকে স্লোচিটা এবং ফাস্টকোয়াল খুব ভাল সরঞ্জাম বলে মনে হচ্ছে যা এই সমস্যাটি থেকে সহায়তা করে।

তবে, আপনি যদি আপনার বিল্ড / ইন্টিগ্রেশন প্রক্রিয়া জুড়ে অ্যাডিনগুলি এড়াতে বা নীতিগুলি আরও ব্যাপকভাবে প্রয়োগ করতে চান তবে এটি আপনার এমএসবিল্ড * প্রজ ফাইলগুলিতে যুক্ত করা একটি শর্টহ্যান্ড ফিক্স।

দ্রষ্টব্য: এটি @ ওলেকসির উত্তরের নম্বর 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>

মনে রাখবেন যে বিল্ডটি সঠিকভাবে শুরু হওয়ার আগেই এই পদক্ষেপটি ঘটে। কনফিগারেশন ফাইলের রূপান্তর প্রকল্প ফোল্ডারে ঘটে। যাতে আপনি ডিবাগিং করার সময় রূপান্তরিত ওয়েবকনফিগটি উপলব্ধ থাকে (স্লোচিথার একটি অপূর্ণতা)।

মনে রাখবেন যে আপনি যদি App_Config ফোল্ডারটি (বা আপনি যা কল করতে পছন্দ করেন) তৈরি করেন, তবে বিভিন্ন মধ্যবর্তী কনফিগার ফাইলে একটি বিল্ড অ্যাকশন = কিছুই নেই এবং আউটপুট ডিরেক্টরিতে অনুলিপি করুন = অনুলিপি করবেন না।

এটি উভয় বিকল্পকে একটি ব্লকে একত্রিত করে। উপযুক্তটি শর্তের ভিত্তিতে কার্যকর করা হয়। ট্রান্সফর্মএক্সএমএল টাস্কটি প্রথমে সংজ্ঞায়িত করা হয়েছে:

<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 ফাইলে সংজ্ঞায়িত করতে পারেন যা আপনার সমাধানে আপনার সমস্ত লঞ্চ প্রকল্পগুলিতে অন্তর্ভুক্ত হয়ে যায়।
এনিওলা

@ গ্রেগবার্গার্ড, আপনি কি এখনই এটি চেষ্টা করতে চান?
এনিওলা

আমি চেষ্টা করে দেখতে পারি আমি ভিজ্যুয়াল স্টুডিওর জন্য কনফিগার ট্রান্সফর্ম প্লাগইন ইনস্টল করেছি এবং এটি সত্যিই ভাল কাজ করেছে। আমি আসলে ভাবছি যে প্লাগইনটি মূলত আপনার উত্তরটি যা করে তা করে।
গ্রেগ বার্গার্ড্ট

ঠিক আছে, আমাকে কীভাবে তা জানাতে দিন।
এনিওলা

1

এক্সডিটি (ওয়েবকনফিগ) রূপান্তর ইঞ্জিন আপনাকে সহায়তা করতে পারে কিনা তা দেখুন। বর্তমানে এটি কেবলমাত্র ওয়েব প্রকল্পগুলির জন্য সমর্থিত, তবে প্রযুক্তিগতভাবে অন্যান্য অ্যাপ্লিকেশন ধরণের ক্ষেত্রে এটি ব্যবহার থেকে আপনাকে বিরত করার কিছুই নেই। প্রজেক্ট ফাইলগুলি ম্যানুয়ালি সম্পাদনা করে এক্সডিটি কীভাবে ব্যবহার করবেন সে সম্পর্কে অনেক গাইড রয়েছে তবে আমি একটি প্লাগইন পেয়েছি যা দুর্দান্ত কাজ করে: https://visualstudiogallery.msdn.microsoft.com/579d3a78-3bdd-497c-bc21-aa6e6abbc859

প্লাগইনটি শুধুমাত্র কনফিগারেশন সেটআপ করতে সহায়তা করে, এটি নির্মাণের প্রয়োজন নেই এবং সমাধানটি অন্য মেশিনে বা প্লাগইন বা অন্য কোনও সরঞ্জামের প্রয়োজন ছাড়া বিল্ড সার্ভারে তৈরি করা যেতে পারে।


এটি এখন উত্তর করা উচিত। VS 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

এখন পর্যন্ত সবচেয়ে সহজ পদ্ধতিটি কী করা উচিত যা খুব সাধারণ এবং প্রয়োজনীয় ফাংশনটি হওয়া উচিত ছিল যা অতিরিক্ত চিন্তাবিদদের দ্বারা স্ক্রু-আপ করা হয়েছিল! ধন্যবাদ জানব্রো
বোয়াইবেড

1

আমি স্লোচিটা সম্পর্কে ভাল জিনিস শুনেছি, কিন্তু এটি কাজ করতে অক্ষম ছিল। আমি নিম্নলিখিতগুলি করেছি: একটি নির্দিষ্ট কনফিগারেশনের জন্য প্রত্যেকটিতে am ট্যাগ যুক্ত করুন।

উদা:

<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 ফাইল পরিবর্তন করার অন্য একটি দুর্দান্ত সহজ উপায় বলে মনে হচ্ছে। মাইক, আপনি স্ট্যান্ডার্ড ডিবাগ এবং রিলিজ কনফিগারেশন দিয়ে পরীক্ষা করেছেন?
বোইসবেড

0

উন্নয়নের জন্য কনফিগারগুলি পরিচালনা এবং ইত্যাদির উপর কিছু গবেষণা করার পরে, আমি আমার নিজের রোল করার সিদ্ধান্ত নিয়েছি, আমি এটি বিটবাকেটে উপলভ্য করেছি: https://bitbucket.org/brightertools/contemplate/wiki/Home

একাধিক পরিবেশের জন্য এই একাধিক কনফিগারেশন ফাইল, এটি একটি বেসিক কনফিগারেশন এন্ট্রি প্রতিস্থাপন সরঞ্জাম যা কোনও পাঠ্য ভিত্তিক ফাইল ফর্ম্যাটের সাথে কাজ করবে।

আশাকরি এটা সাহায্য করবে.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.