ASP.Net Web Application เพิ่ม Config Transform เป็นสีเทา


89

ฉันเพิ่มโครงการแอปพลิเคชันเว็บ ASP.Net ที่มีอยู่ลงในโซลูชันของฉัน นอกเหนือจากการดีบักมาตรฐานและการกำหนดค่ารีลีสแล้วโซลูชันนี้ยังมีการกำหนดค่าแบบกำหนดเองสองแบบ ได้แก่ SAT และ UAT สำหรับเว็บแอปพลิเคชันใหม่ให้คลิกขวาบน Web.Config จะแสดงเมนูบริบท แต่ตัวเลือกสำหรับ "Add Config Transform" จะเป็นสีเทา

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

ความคิด?

คำตอบ:


117

ก่อนอื่นคุณต้องกำหนดคอนฟิกูเรชันในเครื่องมือจัดการการกำหนดค่า เพื่อให้แน่ใจว่าคุณกำลังเรียกใช้เครื่องมือจัดการการกำหนดค่าคุณสามารถเข้าถึงได้โดยไปที่: Build-> Configuraton Manager

ในการใช้งานการกำหนดค่าโซลูชัน<New...>แบบเลื่อนลงเลือก เมื่อคุณเพิ่มแล้วคุณจะสามารถ "เพิ่มการแปลงการกำหนดค่า"

อย่าแก้ไขไฟล์โซลูชันของคุณโดยตรง มันมี แต่จะทำให้ปวดหัว


6
Duh. ฉันเคยลองมาก่อน แต่ไม่สามารถยกเลิกการเลือกช่อง "สร้าง" ได้จึงล้มเหลวเนื่องจากเป็น "รายการที่ซ้ำกัน" ทันทีที่ฉันยกเลิกการเลือกช่อง "สร้าง" มันได้ผล
paulv7260

@maplemale เหมือนกันที่นี่ตัวเลือกยังคงเป็นสีเทา
Anders Lindén

ฉันขอโทษฉันจำไม่ได้ว่าฉันทำงานนี้ได้อย่างไรฉันอาจแฮ็กไฟล์ sln โดยตรงซึ่งตรงกันข้ามกับคำตอบของ Jeremy บางครั้งก็เป็นเพียงตัวเลือกเดียวที่ใช้ได้ตามเวลา ฉันไม่มีปัญหานี้เลยตั้งแต่อัปเกรดเป็น VS2015
maplemale

2
การกำหนดค่าโซลูชันและโครงการแตกต่างกัน! คุณต้องสร้างการกำหนดค่าในโปรเจ็กต์ที่กำหนดก่อนจึงจะใช้การแปลงนั้นได้ เลือก "สร้างการกำหนดค่าโครงการใหม่" เพื่อสร้างการกำหนดค่าในโครงการทั้งหมดพร้อมกันหรือทำทีละรายการเหมือนที่ @ paulv7260 ทำ
Patrick

1
หากยังคงเป็นสีเทาตรวจสอบให้แน่ใจว่าโครงการเว็บของคุณมีการกำหนดค่าการสร้างที่ตรงกับชื่อของการกำหนดค่าโซลูชันและตรวจสอบให้แน่ใจว่าได้เลือกไว้
jmatthias

45

ในฐานะที่เราทำงานร่วมกับ PublishProfiles สำหรับผมคำตอบก็คือการคลิกขวาที่เกี่ยวข้องpubxmlไฟล์ (พบในโฟลเดอร์โครงการPropertiesโฟลเดอร์ย่อยPublishProfiles) Add Config Transformแล้วเลือก ไม่จำเป็นต้องมีผู้จัดการ;)


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

สมบูรณ์แบบ. ทำงานในโครงการ Web Forms เก่าของฉันที่ตอนนี้ฉันกำลังแก้ไขใน Visual Studio 2015 รักมัน ขอขอบคุณ.
bkwdesign

5
ทดสอบและใช้งาน VS 2015 อย่างไรก็ตามฉันยังไม่เข้าใจว่าทำไม "Add Config Transform" จึงเป็นสีเทา
Illidan

20

ในกรณีของฉันใน Visual Studio 2015 เมื่อฉันสร้างโซลูชันใหม่โดยใช้เทมเพลตโปรเจ็กต์Add Config Transformเป็นสีเทา - แต่ด้วยเหตุผลอื่น:

เมื่อคลิกที่"แสดงไฟล์ทั้งหมด"แสดงว่ามีไฟล์อยู่แล้ว - ซ่อนไว้เท่านั้น ดังนั้นปุ่มจึงเป็นสีเทา (เนื่องจากไม่จำเป็นต้องเพิ่มเนื่องจากมีอยู่แล้ว)

  1. คลิกไอคอน "แสดงไฟล์ทั้งหมด":
    ใส่คำอธิบายภาพที่นี่

  2. ตอนนี้คุณสามารถขยาย "Web.config":
    ใส่คำอธิบายภาพที่นี่

  3. ดับเบิลคลิกที่ไฟล์แปลงใด ๆ ( Web.Debug.configหรือWeb.Release.config) เพื่อเปิดและแก้ไข

หมายเหตุ:

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

  • หากคุณต้องการสร้างไฟล์การแปลงคอนฟิกูเรชันเพิ่มเติมโปรดทราบว่าใน Visual Studio การแปลงคอนฟิกจะสัมพันธ์กับคอนฟิกูเรชัน หากต้องการเพิ่มการแปลงอื่นคุณต้องเพิ่มการกำหนดค่าใหม่ก่อน หากต้องการเพิ่มรายการอื่นให้ดำเนินการดังต่อไปนี้: ผ่านตัวจัดการการกำหนดค่า (รายการแบบเลื่อนลงที่คุณสามารถเลือกดีบักหรือรีลีส) เพิ่มการกำหนดค่าใหม่ก่อนเช่น myNewConfig จากนั้นเลือก myNewConfig ตอนนี้เลือก Web.config ใน Solution Explorer คลิกขวาและเลือกในเมนูบริบท "Add Config Transform" - มันจะสร้าง Web.myNewConfig.config เมื่อมีแล้วเมนูบริบทจะเป็นสีเทาอีกครั้งเนื่องจาก VS อนุญาตให้มีการแปลงหนึ่งครั้งต่อการกำหนดค่าเท่านั้น


นี่เป็นสถานการณ์สำหรับฉันเช่นกัน ฉันต้องการให้ไฟล์การแปลง config ยังคงปรากฏอยู่ดังนั้นฉันจึงแสดงความคิดเห็น<DependentUpon>Web.config</DependentUpon>ในไฟล์โครงการ การแปลงยังคงทำงานตามที่คาดไว้
Ethan

ฉันจะเพิ่มการแปลง config ใหม่ได้อย่างไร
Reshma

@Reshma - ใน Visual Studio การแปลง config มีความสัมพันธ์กับการกำหนดค่า ผ่านตัวจัดการการกำหนดค่า (รายการแบบเลื่อนลงที่คุณสามารถเลือก Debug หรือ Release) ให้เพิ่มการกำหนดค่าใหม่ก่อนเช่น myNewConfig จากนั้นเลือก myNewConfig ตอนนี้เลือก Web.config คลิกขวาและเลือกในเมนูบริบท "Add Config Transform" - มันจะสร้าง Web.myNewConfig.config
Matt

ฉันทำแบบนั้น Matt และสามารถเพิ่มไฟล์ config ได้ 1 ไฟล์ แต่ฉันกำลังพยายามเพิ่มไฟล์ config อื่นและตอนนี้ "add Config Transform" เป็นสีเทาอีกครั้ง ฉันยังสร้างไฟล์กำหนดค่าใหม่สำหรับไฟล์กำหนดค่าถัดไป
Reshma

1
@Reshma - ถูกต้องเพราะคุณสามารถมีได้เพียงหนึ่งรายการต่อการกำหนดค่า หากต้องการรับอีกรายการหนึ่งให้เพิ่มการกำหนดค่าเพิ่มเติมหนึ่งรายการพูด myNewConfig2 จากนั้นเลือก myNewConfig2 แล้วลองอีกครั้ง คราวนี้ไม่ควรเป็นสีเทา - เลือก หมายเหตุ:จะเป็นสีเทาทันทีที่มีไฟล์กำหนดค่าสำหรับการกำหนดค่านั้น
Matt

2

ฉันแก้ไขสิ่งนี้โดยตระหนักถึงสองสิ่ง:

  1. มีการกำหนดค่าระดับโซลูชันและมีการกำหนดค่าระดับโครงการ web.MyConfigName.config ถูกสร้างขึ้นตามการกำหนดค่าระดับโปรเจ็กต์
  2. ดูเหมือนว่า Visual Studio 2017 Configuration Manager จะใช้การกำหนดค่าที่จะเพิ่มจากโฟลเดอร์ obj (ซ่อน) การลบโฟลเดอร์ obj สำหรับโปรเจ็กต์และการสร้างใหม่จะอัปเดตโปรเจ็กต์ด้วยการกำหนดค่าที่คุณเพิ่ม

ในการทำให้ตัวเลือก "เพิ่ม config transform" พร้อมใช้งานให้ทำตามขั้นตอนเหล่านี้:

  1. ตรวจสอบให้แน่ใจว่าคุณได้เปิดใช้งานเพื่อแสดงไฟล์ที่ซ่อนอยู่
  2. เปิดตัวจัดการการกำหนดค่าสำหรับโซลูชัน
  3. เลือกที่เกี่ยวข้องโซลูชั่นการตั้งค่าแล้วเลื่อนลงถัดจากเลือกโครงการของคุณ<New..>หรือ<Edit..>และเพิ่มลบหรือแก้ไขสิ่งที่โครงการ configs คุณต้องการ
  4. ลบโฟลเดอร์ obj ในโปรเจ็กต์ของคุณ สร้างใหม่ ตรวจสอบให้แน่ใจว่าคุณได้บันทึกการเปลี่ยนแปลงลงในไฟล์โครงการและโซลูชันของคุณ ฉันยังรีสตาร์ทสตูดิโอวิชวลด้วยเพราะทำไมไม่ ตรวจสอบว่าคุณเห็นโปรเจ็กต์ทั้งหมดของคุณกำหนดค่าเป็นโฟลเดอร์ในโฟลเดอร์ obj ของคุณ
  5. คลิกขวาที่ web.config และเพิ่มการแปลงการกำหนดค่าของคุณ

หวังว่ามันจะช่วยใครบางคน :)


1

เพื่อให้ได้ผลฉันต้องเพิ่มกลุ่มคุณสมบัติใหม่ในไฟล์ csproj ของฉัน

เพิ่ม Config Transformเป็นสีเทา

ฉันเพิ่ม XML ต่อไปนี้ใน csproj ของฉันและโหลดโครงการใหม่ จากนั้นเพิ่ม Config Transform ก็พร้อมใช้งาน เมื่อเลือกการแปลงเพิ่มเติมของฉันถูกเพิ่ม

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'IAT_CMCD|AnyCPU'">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'UAT_CM|AnyCPU'">
    <DebugType>pdbonly</DebugType>
    <Optimize>true</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>

1

วิธีเปิดใช้งานตัวเลือก "Add Config Transform" โปรดทำตามขั้นตอนด้านล่าง ขั้นตอนที่ 1: ไปที่การกำหนดค่าโซลูชัน (ทีมด้านล่าง) ไปที่การกำหนดค่าโซลูชัน (ทีมด้านล่าง)

ขั้นตอนที่ 2: คลิกที่ Configuration Manager คลิกที่ configuration manager

ขั้นตอนที่ 3: เลือกใหม่จากหน้าต่างการกำหนดค่าโซลูชันที่ใช้งานอยู่ เลือกใหม่จากหน้าต่างการกำหนดค่าโซลูชันที่ใช้งานอยู่

ขั้นตอนที่ 4: ตั้งชื่อที่มีความหมายให้กับรายการใหม่ของคุณเช่น Production / Staging และเลือกการตั้งค่าการคัดลอกจากตัวเลือก "Release" ตรวจสอบให้แน่ใจว่าคุณได้เลือกช่องทำเครื่องหมายหากไม่มีการตรวจสอบตามค่าเริ่มต้นแล้วคลิกตกลง ตอนนี้ตั้งชื่อที่มีความหมายให้กับรายการใหม่ของคุณเช่นการผลิต / การจัดเตรียม

ขั้นตอนที่ 5: กลับไปที่ตัวสำรวจโซลูชันของคุณแล้วคลิกขวาที่ไฟล์ Web.Config ของคุณ เพิ่ม Config Transform เปิดใช้งานแล้ว

โฮล่า! เพิ่ม Config Transform เปิดใช้งานแล้ว :)

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