Ubah pengaturan ClickOnce tergantung pada konfigurasi build yang dipilih (hanya versi .NET Framework)

Halaman Diperbarui :
Tanggal pembuatan halaman :

lingkungan

Kerangka
  • Formulir Windows (.NET Framework) secara umum
  • WPF (.NET Framework) secara umum

Premis

Isi dari tips ini adalah asumsi proyek untuk .NET Framework. Dalam kasus .NET (Core), Anda dapat mengatur pengaturan penerbitan ClickOnce di unit konfigurasi build, jadi harap publikasikan seperti biasa.

Ini juga mengasumsikan bahwa Anda memiliki pengetahuan yang cukup untuk menggunakan ClickOnce secara normal.

Pada awalnya

Karena proyek .NET Framework hanya dapat memiliki satu pengaturan penerbitan ClickOnce, Misalnya, untuk memublikasikan dengan setelan yang berbeda dalam build Debug dan build Rilis, Anda harus mengubah setelan secara manual setiap kali sebelum memublikasikannya.

Anda dapat memiliki dua pengaturan dengan mengelompokkan proyek ke dalam DLL dan membuat dua proyek terpisah untuk diterbitkan. Anda akan memiliki konfigurasi yang sama dua kali, dan jika ada file sumber daya yang diperlukan untuk penerbitan, Anda harus memiliki dua di antaranya sekaligus, sehingga manajemen akan merepotkan.

Bagian ini menjelaskan cara membuat file batch (.bat) pengaturan sebanyak yang Anda butuhkan dan menerbitkan ClickOnce.

Mengkonfigurasi ClickOnce

Kali ini, "Lokasi Folder Publik" dan "URL Folder Instalasi" dipisahkan untuk "Debug Build" dan "Release Build". Pengaturan lain dibuat dengan kebijakan menjadikannya umum. Parameter lain dapat dipisahkan, tetapi bisa jadi rumit untuk memisahkan "file aplikasi" dan "prasyarat".

Pertama, buka proyek dan masukkan pengaturan ClickOnce Anda seperti biasa. Konten input diatur ke parameter yang akan dikeluarkan oleh Debug, tetapi apa pun selain bagian umum baik-baik saja selama tidak menyebabkan kesalahan.

Berikut ini adalah contoh konfigurasi:

Setelah Anda mengetik, simpan proyek.

Membuat file .bat untuk penerbitan ClickOnce

Karena dikeluarkan dengan perintah, itu dapat dijalankan di media lain seperti PowerShell, tetapi kali ini dibuat sebagai file BAT.

Anda dapat membuat file di mana saja, tetapi untuk tujuan kesederhanaan, saya akan membuatnya di lokasi file solusi (.sln). Karena ini adalah file BAT, pengkodean karakter adalah Shift-JIS. PS1 bisa UTF-8 (BOM).

Buka file BAT di editor teks dan ketik: Perhatikan bahwa PowerShell dapat menangani pelarian secara berbeda.

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

Baris pertama menunjuk ke lokasi "Developer Command Prompt". Jalur ini tergantung pada versi Visual Studio yang Anda instal.

Setiap bagian dari jalur tergantung pada kondisi berikut:

File Program
Kondisi Jalur
File Program
  • Jika Anda menggunakan OS 32-bit
  • Jika Anda menggunakan Visual Studio versi 64-bit pada OS 64-bit
File Program (x86)
  • Jika Anda menggunakan Visual Studio versi 32-bit pada OS 64-bit
2022
Itu tergantung pada versi Visual Studio yang Anda instal.
Masyarakat
Itu tergantung pada edisi Visual Studio yang Anda instal. "Komunitas", "Profesional", "Perusahaan", dll. akan dimasukkan.

Baris kedua memindahkan direktori saat ini ke lokasi file BAT.

Baris ketiga adalah perintah pemrosesan build ClickOnce. Arti dari setiap parameter adalah sebagai berikut.

deskripsi nama parameter
msbuild Perintah yang menjalankan proses build. Diperlukan dan ditulis terlebih dahulu.
ClickOnceBuildConfiguration.sln Menjelaskan nama file solusi yang akan dibangun.
/t:Publish Menunjukkan proses build ClickOnce.
/p:Configuration=Debug Menentukan konfigurasi build yang telah Anda tetapkan untuk solusi Anda. Jika Anda ingin mengubah konfigurasi debug yang akan dibangun, ubah teks di bagian "Debug".
/p:PublishUrl="publish\Debug\\" Timpa nilai "Lokasi folder publik" pada layar penerbitan Visual Studio dengan string yang ditentukan dan jalankan.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Timpa nilai "URL folder instalasi" pada layar penerbitan Visual Studio dengan string yang ditentukan dan jalankan.

Beberapa parameter telah diekstraksi, tetapi lihat tautan berikut untuk parameter lain:

Sebagai sampel kali ini, kami akan mengubah parameter penerbitan ClickOnce di setiap debug dan Release build, jadi kami akan membuatnya sebagai berikut.

Diterbitkan oleh ClickOnceDebug.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\\"

ClickOnceRelease Diterbitkan .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\\"

ClickOnce Menerbitkan Eksekusi File BAT

Coba jalankan setiap file BAT.

Prompt perintah diluncurkan dan build dimulai.

Sebenarnya file BAT yang dibuat kali ini hanyalah sebuah proses sampai build, sehingga file tersebut tidak dibuat di "lokasi folder publik". File yang diperlukan untuk publikasi telah dibuat. Misalnya, dalam kasus build debug, Anda harus memiliki file di "jalur folder proyek < >\bin\Debug\app.publish\". Salin file-file ini ke "URL folder instalasi" dan itu akan berfungsi dengan benar sebagai ClickOnce.

Menerbitkan ke lokasi folder publik (jika tujuannya adalah folder yang dapat Anda akses langsung)

Situs berikut digunakan sebagai referensi untuk bagian ini.

Area ini tidak terkait langsung dengan pemrosesan ClickOnce, jadi silakan merujuk ke situs di atas untuk penjelasan terperinci.

Pertama, buka file proyek (.csproj) di editor teks. Ini bukan file solusi.

Di dalamnya ada struktur XML, dan jika Anda menggulir ke bawah, tambahkan </Project> kode berikut ke baris di atasnya. Jika ini adalah proses premis salinan file, isinya tetap, tetapi bagiannya CopyPublishedApplication sewenang-wenang. Anda akan menggunakan nama ini nanti.

<!-- ここから 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 の発行処理 -->

Simpan setelah Anda memasukkannya.

Kemudian buka setiap file BAT dan tambahkan ke /t:CopyPublishedApplication parameter msbuild. CopyPublishedApplication Adalah nama yang kuberikan padamu sebelumnya.

ClickOnceDebug menerbitkan.bat (contoh)

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

Saat Anda menjalankan file BAT, Anda dapat melihat bahwa file tersebut disalin ke Lokasi Folder Publik. Saat ini, tidak ada nama program < >.exe file, tetapi tidak perlu karena awalnya termasuk dalam pengaturan.exe.

Suplemen

Jika ada beberapa proyek dalam solusi, jalankan CopyPublishedApplication untuk semua proyek. Dalam kebanyakan kasus, ini hanya diatur ke proyek exe, sehingga kesalahan akan ditampilkan ketika berjalan di CopyPublishedApplication proyek lain, Aman untuk mengabaikannya karena hanya menampilkan pesan.

Menerbitkan ke lokasi folder publik (untuk FTP)

Saya belum mencobanya, tetapi Anda mungkin ingin merujuk ke situs-situs berikut.

Hal-hal lain yang perlu diingat