เปลี่ยนการตั้งค่า ClickOnce ขึ้นอยู่กับการกําหนดค่าบิลด์ที่เลือก (เวอร์ชัน .NET Framework เท่านั้น)

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สิ่งแวดล้อม

โครงร่าง
  • ฟอร์มของ Windows (กรอบงาน NET) โดยทั่วไป
  • WPF (กรอบงาน.NET) โดยทั่วไป

สถานที่ตั้ง

เนื้อหาของเคล็ดลับเหล่านี้เป็นสมมติฐานโครงการสําหรับ.NET Framework ในกรณีของ .NET (Core), คุณสามารถตั้งค่าการเผยแพร่ ClickOnce ในหน่วยการกําหนดค่าบิลด์, ดังนั้นโปรดเผยแพร่ตามปกติ.

นอกจากนี้ยังถือว่าคุณมีความรู้เพียงพอที่จะใช้ ClickOnce ตามปกติ.

ทีแรก

เนื่องจากโครงการ .NET Framework สามารถมีการตั้งค่าการประกาศ ClickOnce ได้เพียงหนึ่งการตั้งค่าเท่านั้น ตัวอย่างเช่น เมื่อต้องการเผยแพร่ด้วยการตั้งค่าต่างๆ ในบิลด์ Debug และบิลด์รีลีส คุณต้องเปลี่ยนการตั้งค่าด้วยตนเองทุกครั้งก่อนที่จะเผยแพร่

คุณสามารถมีการตั้งค่าสองแบบได้โดยการจัดกลุ่มโครงการเป็น DLL และสร้างโครงการแยกกันสองโครงการสําหรับการประกาศ คุณจะมีการกําหนดค่าเดียวกันสองครั้งและหากมีไฟล์ทรัพยากรที่จําเป็นสําหรับการเผยแพร่คุณต้องมีสองไฟล์ในแต่ละครั้งดังนั้นการจัดการจะลําบาก

ส่วนนี้อธิบายวิธีการสร้างไฟล์แบตช์ (.bat) ได้มากเท่าที่คุณต้องการและเผยแพร่ ClickOnce

การกําหนดค่าคลิกOnce

คราวนี้ "ตําแหน่งโฟลเดอร์สาธารณะ" และ "URL โฟลเดอร์การติดตั้ง" ถูกแยกออกสําหรับ "Debug Build" และ "Release Build" การตั้งค่าอื่น ๆ ถูกสร้างขึ้นด้วยนโยบายในการทําให้เป็นมาตรฐาน พารามิเตอร์อื่น ๆ สามารถแยกจากกันได้ แต่อาจเป็นเรื่องยุ่งยากที่จะแยก "ไฟล์แอปพลิเคชัน" และ "ข้อกําหนดเบื้องต้น" ออกจากกัน

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

ต่อไปนี้เป็นตัวอย่างของการตั้งค่าคอนฟิก:

เมื่อคุณพิมพ์แล้ว ให้บันทึกโครงการ

สร้างไฟล์.batสําหรับการเผยแพร่ ClickOnce

เนื่องจากออกมาพร้อมกับคําสั่งจึงสามารถดําเนินการบนสื่ออื่นๆ เช่น PowerShell ได้ แต่คราวนี้ถูกสร้างขึ้นเป็นไฟล์ BAT

คุณสามารถสร้างไฟล์ได้ทุกที่ แต่เพื่อวัตถุประสงค์ที่เรียบง่ายฉันจะสร้างมันในตําแหน่งของไฟล์โซลูชัน (.sln) เนื่องจากเป็นไฟล์ BAT การเข้ารหัสอักขระจึงเป็น Shift-JIS PS1 สามารถเป็น UTF-8 (BOM)

เปิดไฟล์ BAT ในโปรแกรมแก้ไขข้อความและพิมพ์: โปรดทราบว่า PowerShell อาจจัดการการหลบหนีแตกต่างกัน

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

บรรทัดแรกชี้ไปที่ตําแหน่งของ "พรอมต์คําสั่งของนักพัฒนา" เส้นทางนี้ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง

แต่ละส่วนของเส้นทางขึ้นอยู่กับเงื่อนไขต่อไปนี้:

ไฟล์โปรแกรม
เงื่อนไขเส้นทาง
ไฟล์โปรแกรม
  • หากคุณใช้ระบบปฏิบัติการ 32 บิต
  • ถ้าคุณกําลังใช้ Visual Studio รุ่น 64 บิตบนระบบปฏิบัติการแบบ 64 บิต
ไฟล์โปรแกรม (x86)
  • ถ้าคุณกําลังใช้ Visual Studio รุ่น 32 บิตบนระบบปฏิบัติการแบบ 64 บิต
2022
ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง
ชุมชน
ขึ้นอยู่กับรุ่นของ Visual Studio ที่คุณกําลังติดตั้ง "ชุมชน", "มืออาชีพ", "องค์กร" ฯลฯ จะถูกป้อน

บรรทัดที่สองย้ายไดเร็กทอรีปัจจุบันไปยังตําแหน่งของไฟล์ BAT

บรรทัดที่สามคือคําสั่งการประมวลผลการสร้าง ClickOnce ความหมายของแต่ละพารามิเตอร์มีดังนี้

คําอธิบายชื่อพารามิเตอร์
msbuild คําสั่งที่รันกระบวนการสร้าง จําเป็นและเขียนก่อน
ClickOnceBuildConfiguration.sln อธิบายชื่อแฟ้มของโซลูชันที่จะสร้าง
/t:Publish ระบุกระบวนการสร้าง ClickOnce
/p:Configuration=Debug ระบุการตั้งค่าคอนฟิกบิลด์ที่คุณได้ตั้งค่าไว้สําหรับโซลูชันของคุณ ถ้าคุณต้องการเปลี่ยนการกําหนดค่าการตรวจแก้จุดบกพร่องที่จะสร้าง ให้เปลี่ยนข้อความในส่วน "ดีบัก"
/p:PublishUrl="publish\Debug\\" เขียนทับค่าของ "ตําแหน่งที่ตั้งโฟลเดอร์สาธารณะ" บนหน้าจอการประกาศ Visual Studio ด้วยสตริงที่ระบุ และดําเนินการ
/p:InstallUrl="\\xxxxServer\publish_Debug\\" เขียนทับค่าของ "URL โฟลเดอร์การติดตั้ง" บนหน้าจอการประกาศ Visual Studio ด้วยสตริงที่ระบุ และดําเนินการ

พารามิเตอร์บางตัวถูกแยกออกแล้ว แต่ดูลิงก์ต่อไปนี้สําหรับพารามิเตอร์อื่นๆ:

เป็นตัวอย่างในครั้งนี้เราจะเปลี่ยนพารามิเตอร์การเผยแพร่ของ ClickOnce ในแต่ละดีบักและรีลีสบิลด์ดังนั้นเราจะสร้างมันดังนี้

เผยแพร่โดย คลิกออนเซเดบัค.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceออกเผยแพร่.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

คลิกOnce เผยแพร่การดําเนินการไฟล์ BAT

ลองเรียกใช้ไฟล์ BAT แต่ละไฟล์

พรอมต์คําสั่งถูกเปิดใช้งานและการสร้างจะเริ่มต้น

จริงๆแล้วไฟล์ BAT ที่สร้างขึ้นในครั้งนี้เป็นเพียงกระบวนการจนกว่าจะสร้างดังนั้นไฟล์จะไม่ถูกสร้างขึ้นใน "ตําแหน่งโฟลเดอร์สาธารณะ" ไฟล์ที่จําเป็นสําหรับการเผยแพร่ได้ถูกสร้างขึ้นแล้ว ตัวอย่างเช่น ในกรณีของรุ่นการตรวจแก้จุดบกพร่อง คุณควรมีแฟ้มในเส้นทางโฟลเดอร์โครงการ "< >\bin\Debug\app.publish\" คัดลอกไฟล์เหล่านี้ไปยัง "URL ของโฟลเดอร์การติดตั้ง" และจะทํางานได้อย่างถูกต้องเป็น ClickOnce

ประกาศไปยังตําแหน่งโฟลเดอร์สาธารณะ (ถ้าปลายทางเป็นโฟลเดอร์ที่คุณมีสิทธิ์เข้าถึงโดยตรง)

ไซต์ต่อไปนี้ใช้เป็นข้อมูลอ้างอิงสําหรับส่วนนี้

พื้นที่นี้ไม่เกี่ยวข้องโดยตรงกับการประมวลผลของ ClickOnce, ดังนั้นโปรดดูที่เว็บไซต์ข้างต้นสําหรับคําอธิบายโดยละเอียด.

ขั้นแรกให้เปิดไฟล์โครงการ (.csproj) ในโปรแกรมแก้ไขข้อความ มันไม่ใช่ไฟล์แก้ปัญหา

ภายในเป็นโครงสร้าง XML และถ้าคุณเลื่อนไปด้านล่างให้เพิ่มรหัสต่อไปนี้ </Project> ลงในบรรทัดด้านบน หากเป็นกระบวนการคัดลอกหลักฐานการคัดลอกไฟล์เนื้อหาจะได้รับการแก้ไข แต่ส่วนหนึ่งของนั้น CopyPublishedApplication เป็นไปตามอําเภอใจ คุณจะใช้ชื่อนี้ในภายหลัง

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

บันทึกเมื่อคุณป้อนแล้ว

จากนั้นเปิดไฟล์ BAT แต่ละไฟล์และเพิ่มลงใน /t:CopyPublishedApplication พารามิเตอร์ msbuild CopyPublishedApplication เป็นชื่อที่ฉันให้คุณก่อนหน้านี้

คลิกOnceDebugเผยแพร่.bat (ตัวอย่าง)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

เมื่อคุณเรียกใช้แฟ้ม BAT คุณจะเห็นว่า แฟ้มถูกคัดลอกไปยังตําแหน่งโฟลเดอร์สาธารณะ ในขณะนี้ไม่มีชื่อโปรแกรม<>.exeไฟล์ แต่ไม่จําเป็นเพราะเดิมรวมอยู่ใน.exeการตั้งค่า

เสริม

หากมีหลายโครงการในโซลูชัน ให้เรียกใช้ CopyPublishedApplication สําหรับโครงการทั้งหมด ในกรณีส่วนใหญ่จะถูกตั้งค่าเป็นโครงการ exe เท่านั้นดังนั้นข้อผิดพลาดจะปรากฏขึ้นเมื่อทํางานใน CopyPublishedApplication โครงการอื่น การละเว้นนั้นปลอดภัยเพราะจะแสดงเฉพาะข้อความเท่านั้น

ประกาศไปยังตําแหน่งที่ตั้งโฟลเดอร์สาธารณะ (สําหรับ FTP)

ฉันไม่ได้พยายามมัน แต่คุณอาจต้องการอ้างถึงเว็บไซต์ต่อไปนี้

สิ่งอื่น ๆ ที่ควรคํานึงถึง