วิธีเลือก app.config อื่นสำหรับการกำหนดค่าบิลด์ต่างๆ


115

ฉันมีโครงการประเภท dllที่มีการทดสอบการรวม MSTest ในเครื่องของฉันการทดสอบผ่านและฉันต้องการให้สิ่งเดียวกันนี้เกิดขึ้นบนเซิร์ฟเวอร์ CI (ฉันใช้ TeamCity) แต่การทดสอบล้มเหลวเพราะฉันต้องปรับการตั้งค่าบางอย่างใน app.config นี่คือเหตุผลที่ฉันคิดว่าจะมีไฟล์ app.config ที่สองแยกต่างหากซึ่งจะเก็บการตั้งค่าสำหรับเซิร์ฟเวอร์ CI

ดังนั้นฉันต้องการที่จะมี

/ Sln
 / Proj
  app.config (ฉันคิดว่าสิ่งนี้จำเป็นสำหรับ VS)
  app.Release.config (นี่คือไฟล์กำหนดค่าอิสระแบบสแตนด์อโลน)

ดังนั้นถ้าฉันเลือก Release configuration ใน build config บน CI ฉันต้องการใช้ไฟล์ app.Release.config แทน app.config

ปัญหา
ดูเหมือนจะไม่ตรงไปตรงมาสำหรับโครงการประเภท. dll ธรรมดา ๆ สำหรับโครงการเว็บฉันสามารถแปลงการกำหนดค่าเว็บได้ ฉันพบแฮ็ควิธีทำการแปลงเหล่านี้สำหรับโปรเจ็กต์ประเภท dll แต่ฉันไม่ใช่แฟนตัวยงของแฮ็ค

คำถาม
วิธีมาตรฐานในการปรับแต่งไฟล์ app.config ขึ้นอยู่กับ build config สำหรับโครงการ. NET (เช่น Debug, Release, ... ) คืออะไร?

คำตอบ:


154

ใช้ปลั๊กอินSlowCheetah สำหรับตัวเลือกเพิ่มเติมและรายละเอียดเกี่ยวกับวิธีใช้ SlowCheetah อ่านต่อ

ที่คุณได้สังเกตเห็นแล้วไม่มีค่าเริ่มต้นและวิธีที่ง่ายต่อการใช้ config ไฟล์ที่แตกต่างกันสำหรับประเภท Library (.dll)โครงการ เหตุผลก็คือความคิดในปัจจุบันคือ: "คุณไม่จำเป็นต้อง"! นักพัฒนากรอบคิดว่าคุณต้องมีการกำหนดค่าสำหรับไฟล์ปฏิบัติการไม่ว่าจะเป็นคอนโซลเดสก์ท็อปเว็บแอปมือถือหรืออย่างอื่น หากคุณเริ่มต้นให้การกำหนดค่าสำหรับdllคุณอาจจบลงด้วยสิ่งที่ฉันสามารถเรียกนรกการตั้งค่า คุณอาจไม่เข้าใจอีกต่อไป (ง่ายๆ) ว่าทำไมจึงเป็นเช่นนี้และตัวแปรนั้นมีค่าแปลก ๆ เช่นนี้ดูเหมือนจะมาจากไหน

"เดี๋ยวก่อน" - คุณอาจพูดว่า "แต่ฉันต้องการสิ่งนี้สำหรับการทดสอบการผสานรวม / หน่วยของฉันและมันคือไลบรารี!" และนั่นคือความจริงและนี่คือสิ่งที่คุณทำได้ (เลือกเพียงอันเดียวอย่าผสม):

1. SlowCheetah - แปลงไฟล์ config ปัจจุบัน

คุณสามารถติดตั้งSlowCheetahซึ่งเป็นปลั๊กอิน Visual Studio ที่ทำการจิ้ม XML ระดับต่ำทั้งหมดให้กับคุณ วิธีการทำงานสั้น ๆ :

  • ติดตั้ง SlowCheetah และรีสตาร์ท Visual Studio (Visual Studio> Tools> Extensions and Updates ... > Online> Visual Studio Gallery> ค้นหา "Slow Cheetah")
  • กำหนดการตั้งค่าคอนฟิกโซลูชันของคุณ ( ดีบักและรีลีสจะอยู่ที่นั่นโดยค่าเริ่มต้น) คุณสามารถเพิ่มได้ (คลิกขวาที่โซลูชันในSolution Explorer > Configuration Manager ... > Active Solution Configuration > New ...
  • เพิ่มไฟล์กำหนดค่าหากจำเป็น
  • คลิกขวาที่ไฟล์กำหนดค่า> เพิ่มการแปลง
    • สิ่งนี้จะสร้างไฟล์การแปลง - หนึ่งไฟล์ต่อการกำหนดค่าของคุณ
    • แปลงไฟล์ทำงานเป็นหัวฉีด / mutators พวกเขาพบรหัส XML ที่จำเป็นในไฟล์กำหนดค่าดั้งเดิมและฉีดขึ้นบรรทัดใหม่หรือเปลี่ยนค่าที่ต้องการไม่ว่าคุณจะสั่งให้ทำอะไรก็ตาม

2. Fiddle กับไฟล์. 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และอื่น ๆ ขณะนี้ขึ้นอยู่กับการกำหนดค่าของคุณ Visual Studio จะเลือกไฟล์ config จากConfigโฟลเดอร์และคัดลอกเปลี่ยนชื่อลงในไดเร็กทอรีเอาต์พุต ดังนั้นหากคุณมีโปรเจ็กต์ PatternPA.Test.Integrationและการกำหนดค่าDebug ที่เลือกไว้ในโฟลเดอร์ผลลัพธ์หลังการสร้างคุณจะพบไฟล์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>

ใน Visual Studio คุณสามารถมีสิ่งนี้ได้

โครงสร้างโครงการ

3. ใช้ไฟล์สคริปต์ภายนอก Visual Studio

เครื่องมือสร้างแต่ละตัว (เช่นNAnt , MSBuild ) จะให้ความสามารถในการแปลงไฟล์ config โดยขึ้นอยู่กับการกำหนดค่า สิ่งนี้มีประโยชน์หากคุณสร้างโซลูชันของคุณบนเครื่องบิลด์ซึ่งคุณต้องมีการควบคุมมากขึ้นว่าคุณเตรียมผลิตภัณฑ์สำหรับวางจำหน่ายอย่างไรและอย่างไร

ตัวอย่างเช่นคุณสามารถใช้งาน dll ของการเผยแพร่เว็บเพื่อแปลงไฟล์ config ใด ๆ

<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 ดั้งเดิม
Massood Khaari

3
@MassoodKhaari คุณต้องแน่ใจว่างานนี้ถูกเรียกสำหรับเป้าหมายการเผยแพร่ เมื่อคุณเผยแพร่โปรเจ็กต์จะมีการเรียกเป้าหมายการสร้างแยกต่างหากซึ่งอาจไม่เรียกตามAfterBuildเป้าหมายเริ่มต้น ในระหว่างการคอมไพล์ทั่วไปAfterBuildเป้าหมายจะถูกเรียกโดยค่าเริ่มต้น กรณีเผยแพร่ควรมีการแก้ไขอย่างรวดเร็ว
oleksii

1
ใช้วิธีที่สองของคุณ (นะ) ไปที่คุณสมบัติของโปรเจ็กต์และแก้ไขBeforeBuildเพื่อคัดลอกApp.<Target>.configทับApp.configในdir โครงการไม่ใช่ dir เอาต์พุต
SparK

@oleksii คุณพูดถูก แต่ฉันยังไม่พบเป้าหมายที่กระบวนการเผยแพร่ทางเว็บของฉันใช้อยู่ (ใน Visual Studio 2013)
Massood Khaari

1
ฉันใช้วิธีที่สอง แต่จำเป็นต้องเพิ่มเงื่อนไขให้กับเป้าหมาย AfterBuild เพื่อให้แน่ใจว่าไฟล์นั้นมีอยู่จริงก่อนที่จะลบ ฉันมีการกำหนดค่าการสร้าง Debug ซึ่งโดยพื้นฐานแล้วจะใช้ไฟล์ App.config เริ่มต้น แต่ฉันไม่มี App.Debug.config ซึ่งหมายความว่าขั้นตอนการสร้างจะล้มเหลว Condition="Exists('$(ProjectDir)App.$(Configuration).config')"ฉันเพิ่งเพิ่ม
Siewers

23

คุณสามารถลองใช้แนวทางต่อไปนี้:

  1. คลิกขวาที่โครงการใน Explorer โซลูชันและเลือกโครงการยกเลิก
  2. โครงการจะถูกยกเลิกการโหลด คลิกขวาที่โครงการอีกครั้งและเลือกแก้ไข <YourProjectName>
  3. ตอนนี้คุณสามารถแก้ไขไฟล์โครงการภายใน Visual Studio
  4. ค้นหาตำแหน่งในไฟล์ * .csproj ที่รวมไฟล์คอนฟิกูเรชันแอปพลิเคชันของคุณ จะมีลักษณะดังนี้:
    <ItemGroup>
        <None Include = "App.config" />
    </ ItemGroup>
  1. แทนที่บรรทัดนี้ด้วยสิ่งต่อไปนี้:
    <ItemGroup Condition = "'$ (Configuration)' == 'Debug'">
        <ไม่มีรวม = "App.Debug.config" />
    </ ItemGroup>

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

ฉันไม่ได้ลองใช้วิธีนี้กับapp.configไฟล์ แต่ใช้ได้ดีกับรายการอื่น ๆ ของโครงการ Visual Studio คุณสามารถปรับแต่งกระบวนการสร้างได้เกือบทุกแบบที่คุณต้องการ อย่างไรก็ตามแจ้งให้เราทราบผล


Tnx สำหรับคำตอบ แต่ใช้ไม่ได้กับ app.config VS ต้องมีการบังคับapp.configและไม่ใช้การกำหนดค่ารีลีสหากฉันใช้ VS build หรือ Teamcity VS sln build runner
oleksii

2
ที่นี่อธิบายวิธีการทำ: เปิดใช้งาน app.debug.config app.release.config
Gabrielizalo

1
ทำไมคำตอบนี้จึงมีผู้โหวตจำนวนมาก? ฉันลองแล้วมันไม่ได้ผล ในความเป็นจริงทั้งในโหมดดีบั๊กและโหมดรีลีสไม่มีไฟล์ App.config ดังนั้นจึงไม่มีไฟล์ที่เกี่ยวข้องในโฟลเดอร์เอาต์พุต ไฟล์ App.Debug.config และ App.Release.config ไม่มีความหมายใด ๆ สำหรับ Visual Studio
MarkusParker

ไม่ได้ผล: ไม่สามารถเปิด. csproj ข้อความแสดงข้อผิดพลาด "องค์ประกอบภายนอกองค์ประกอบเป้าหมายต้องมี: รวมอัปเดตหรือลบ"
Elo

12

คุณควรพิจารณาConfigGen มันถูกพัฒนาขึ้นเพื่อการนี้ สร้างไฟล์กำหนดค่าสำหรับเครื่องปรับใช้แต่ละเครื่องโดยยึดตามไฟล์เทมเพลตและไฟล์การตั้งค่า ฉันรู้ว่านี่ไม่ได้ตอบคำถามของคุณโดยเฉพาะ แต่อาจตอบปัญหาของคุณได้ดี

ดังนั้นแทนที่จะแก้จุดบกพร่องปล่อย ฯลฯ คุณอาจมี Test, UAT, Production เป็นต้นนอกจากนี้คุณยังสามารถมีการตั้งค่าที่แตกต่างกันสำหรับเครื่องของนักพัฒนาแต่ละเครื่องเพื่อให้คุณสามารถสร้างการกำหนดค่าเฉพาะสำหรับเครื่อง dev ของคุณและเปลี่ยนแปลงได้โดยไม่ส่งผลต่อการปรับใช้ของเครื่องอื่น .

ตัวอย่างการใช้งานอาจมี ...

<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

.../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 ในเครื่องที่ใช้บนเครื่อง dev ของคุณจะถูกแทนที่ด้วยการกำหนดค่าที่สร้างขึ้นซึ่งระบุโดยสวิตช์ภายใน (-l) และสวิตช์ชื่อไฟล์ (-n)


2
Tnx สำหรับคำตอบนี้ดูไม่เลว แต่มีข้อเสียบางประการคือแสดงการดาวน์โหลดเพียง 75 ครั้ง (จึงยังไม่เป็นผู้ใหญ่) และใช้ได้กับ. xls หรือ. xlsx เท่านั้น ฉันไม่ต้องการพึ่งพารูปแบบเอกสารที่กำหนดเองอื่นสำหรับการใช้งานง่ายๆ ฉันกำลังมองหาแนวทางที่เป็นมาตรฐานมากกว่านี้ ...
oleksii

2
จุดยุติธรรมแม้ว่าจะบอกว่ามีการดาวน์โหลด CodePlex 194 ครั้ง แต่ xls เป็นสเปรดชีตแทบจะไม่เป็นรูปแบบที่กำหนดเองและฉันรู้จักธนาคารเพื่อการลงทุนรายใหญ่สามแห่งที่อนุมัติให้ใช้ดังนั้นหากมันดีพอสำหรับพวกเขา ... ของคุณสมบัติที่ร้องขอในปัจจุบันคือการใช้ xml สำหรับการตั้งค่า เกือบจะพร้อมแล้ว แต่ฉันก็ชอบวิธีสเปรดชีตมากกว่า มันง่ายกว่ามากที่จะเห็นทุกสภาพแวดล้อมในมุมมองแบบตาราง
Daniel Dyson

ตอนนี้เราอยู่ในขั้นตอนสุดท้ายของการทดสอบ configGen เวอร์ชันที่สามารถใช้สร้างไฟล์ข้อความธรรมดาไม่ใช่แค่ xml ดังนั้นหากคุณต้องการสร้าง css, sql, javascript และอื่น ๆ โดยเฉพาะให้จับตาดูไซต์ configGen
Daniel Dyson

ขอบคุณ Daniel สำหรับวิธีแก้ปัญหานี่คือสิ่งที่ฉันกำลังมองหา ฉันจะลองดู
Bhupinder Singh

10

ใช้วิธีเดียวกับวิธีการของโรมิโอฉันปรับให้เข้ากับ Visual Studio 2010:

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

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

ที่นี่คุณต้องเก็บไฟล์ App.config ทั้งสองไว้ในไดเรกทอรีต่างกัน (appDebug และ appRelease) ฉันทดสอบแล้วและใช้งานได้ดี!


3

ฉันใช้เครื่องมือ XmlPreprocessสำหรับการจัดการไฟล์ config กำลังใช้ไฟล์การแม็พหนึ่งไฟล์สำหรับหลายสภาพแวดล้อม (หรือหลายบิลด์เป้าหมายในกรณีของคุณ) คุณสามารถแก้ไขไฟล์การแมปด้วย Excel ใช้งานง่ายมาก


3

SlowCheetah และ FastKoala จาก VisualStudio Gallery ดูเหมือนจะเป็นเครื่องมือที่ดีมากที่ช่วยแก้ปัญหานี้

อย่างไรก็ตามหากคุณต้องการหลีกเลี่ยง addins หรือใช้หลักการที่พวกเขานำไปใช้อย่างครอบคลุมมากขึ้นตลอดกระบวนการสร้าง / การรวมของคุณการเพิ่มสิ่งนี้ลงในไฟล์ msbuild * proj ของคุณเป็นการแก้ไขชวเลข

หมายเหตุ: นี่เป็นการนำคำตอบของ @ oleksii มาใช้ใหม่ไม่มากก็น้อย

สิ่งนี้ใช้ได้กับโครงการ. 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>

โปรดทราบว่าขั้นตอนนี้เกิดขึ้นก่อนที่การสร้างที่เหมาะสมจะเริ่มขึ้น การเปลี่ยนแปลงของไฟล์ config เกิดขึ้นในโฟลเดอร์โครงการ เพื่อให้ web.config ที่แปลงแล้วพร้อมใช้งานเมื่อคุณทำการดีบัก (ข้อเสียของ SlowCheetah)

อย่าลืมว่าถ้าคุณสร้างโฟลเดอร์ App_Config (หรืออะไรก็ตามที่คุณเลือกเรียกมัน) ไฟล์กำหนดค่าระดับกลางต่างๆควรมี Build Action = None และ Copy to Output Directory = ห้ามคัดลอก

ซึ่งรวมตัวเลือกทั้งสองไว้ในบล็อกเดียว สิ่งที่เหมาะสมจะถูกดำเนินการตามเงื่อนไข ภารกิจ 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>


ฉันเพิ่งลองสิ่งนี้ใน Visual Studio 2017 และไม่ได้ผล ยิง. ฉันหวังเป็นอย่างยิ่งว่ามันจะได้ผลเพราะดูเหมือนว่าจะใช้งานได้ง่ายที่สุด
Greg Burghardt

งาน TransformXml ไม่ได้กำหนดไว้ในตัวอย่าง ฉันกำลังเพิ่มรายการ คุณสามารถกำหนดได้ในไฟล์ mycustom.targets ที่รวมอยู่ในโครงการเปิดตัวทั้งหมดในโซลูชันของคุณ
Eniola

@GregBurghardt คุณอยากลองเลยไหม
Eniola

ฉันอาจจะลองดู ฉันติดตั้งปลั๊กอิน Config Transform สำหรับ Visual Studio และใช้งานได้ดีจริงๆ ฉันสงสัยจริงๆว่าปลั๊กอินทำตามคำตอบของคุณหรือไม่
Greg Burghardt

โอเคแจ้งให้เราทราบว่าเป็นอย่างไร
Eniola

1

ดูว่าเอ็นจิ้นการแปลง XDT (web.config) สามารถช่วยคุณได้หรือไม่ ขณะนี้รองรับเฉพาะโปรเจ็กต์เว็บเท่านั้น แต่ในทางเทคนิคแล้วไม่มีอะไรหยุดคุณจากการใช้งานในแอปพลิเคชันประเภทอื่น ๆ มีคำแนะนำมากมายเกี่ยวกับวิธีใช้ XDT โดยการแก้ไขไฟล์โครงการด้วยตนเอง แต่ฉันพบปลั๊กอินที่ใช้งานได้ดี: https://visualstudiogallery.msdn.microsoft.com/579d3a78-3bdd-497c-bc21-aa6e6abbc859

ปลั๊กอินช่วยในการตั้งค่าคอนฟิกเท่านั้นไม่จำเป็นต้องสร้างและโซลูชันสามารถสร้างบนเครื่องอื่นหรือบนเซิร์ฟเวอร์บิลด์โดยไม่ต้องใช้ปลั๊กอินหรือเครื่องมืออื่น ๆ


นี่น่าจะเป็นคำตอบในตอนนี้ เพิ่งทดลองใช้เมื่อ VS 2017 และใช้งานได้ดีอย่างมีเสน่ห์ คุณไม่จำเป็นต้องเผยแพร่โครงการ เพียงแค่สร้างมัน ใช้งานได้ดีสำหรับโครงการทดสอบของเราเพื่อใช้ในการสร้างการผสานรวมอย่างต่อเนื่องเพื่อให้เราสามารถเรียกใช้การทดสอบ Selenium ในโหมด headless ได้ แต่จะทำงานในเครื่องโดยเปิดเบราว์เซอร์ +1,000,000 ถ้าฉันทำได้
Greg Burghardt

1

ฉันได้แก้ไขหัวข้อนี้ด้วยวิธีแก้ปัญหาที่ฉันพบที่นี่: http://www.blackwasp.co.uk/SwitchConfig.aspx

ในระยะสั้นสิ่งที่พวกเขาระบุ: "โดยการเพิ่มเหตุการณ์หลังการสร้าง [... ] เราจำเป็นต้องเพิ่มสิ่งต่อไปนี้:

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

วิธีที่ง่ายที่สุดในการทำสิ่งที่ควรจะเป็นฟังก์ชั่นที่เรียบง่ายและจำเป็นมากซึ่งถูกทำให้เมาโดยนักคิดมากเกินไป! ขอบคุณ Janbro
BoiseBaked

1

ฉันเคยได้ยินสิ่งดีๆเกี่ยวกับ SlowCheetah แต่ไม่สามารถใช้งานได้ ฉันทำสิ่งต่อไปนี้: เพิ่มแท็ก am ในแต่ละรายการสำหรับการกำหนดค่าเฉพาะ

Ex:

<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 ต่อการกำหนดค่าบิลด์ ไมค์คุณทดสอบกับ Debug และ Release Configurations มาตรฐานหรือไม่?
BoiseBaked

0

หลังจากการวิจัยเกี่ยวกับการจัดการการกำหนดค่าสำหรับการพัฒนาและการสร้าง ฯลฯ ฉันตัดสินใจที่จะม้วนของตัวเองฉันได้ทำให้มันพร้อมใช้งานบน bitbucket ที่: https://bitbucket.org/brightertools/contemplate/wiki/Home

ไฟล์การกำหนดค่าหลายไฟล์สำหรับหลายสภาพแวดล้อมซึ่งเป็นเครื่องมือทดแทนรายการการกำหนดค่าพื้นฐานที่จะทำงานกับรูปแบบไฟล์ที่ใช้ข้อความ

หวังว่านี่จะช่วยได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.