Tukar seting ClickOnce bergantung pada konfigurasi binaan yang dipilih (versi .NET Framework sahaja)

Laman dikemaskini :
Tarikh penciptaan halaman :

Persekitaran

Rangka kerja
  • Borang Windows (Rangka Kerja.NET) secara umum
  • WPF (.NET Framework) secara umum

Premis

Kandungan petua ini adalah andaian projek untuk Rangka Kerja .NET. Dalam kes .NET (Core), anda boleh mengesetkan seting penerbitan ClickOnce dalam unit konfigurasi binaan, jadi sila terbitkan seperti biasa.

Ia juga menganggap bahawa anda mempunyai pengetahuan yang cukup untuk menggunakan ClickOnce secara normal.

Pada mulanya

Kerana projek Rangka Kerja .NET hanya boleh mempunyai satu seting penerbitan ClickOnce, Contohnya, untuk menerbitkan dengan seting yang berbeza dalam binaan Nyahpepijat dan binaan Keluaran, anda mesti mengubah seting secara manual setiap kali sebelum penerbitan.

Anda boleh mempunyai dua tetapan dengan mengumpulkan projek ke dalam DLL dan membuat dua projek berasingan untuk diterbitkan. Anda akan mempunyai konfigurasi yang sama dua kali, dan jika terdapat fail sumber yang diperlukan untuk penerbitan, anda mesti mempunyai dua daripadanya pada satu masa, jadi pengurusan akan menyusahkan.

Bahagian ini menerangkan cara membuat fail batch (.bat) seberapa banyak tetapan yang anda perlukan dan menerbitkan ClickOnce.

Mengkonfigurasikan ClickOnce

Kali ini, "Lokasi Folder Awam" dan "URL Folder Pemasangan" dipisahkan untuk "Binaan Nyahpepijat" dan "Release Build". Tetapan lain dicipta dengan dasar menjadikannya biasa. Parameter lain boleh berasingan, tetapi ia boleh menjadi rumit untuk memastikan "fail aplikasi" dan "prasyarat" berasingan.

Mula-mula, buka projek dan masukkan seting ClickOnce anda seperti biasa. Kandungan input ditetapkan kepada parameter yang akan dikeluarkan oleh Debug, tetapi apa-apa selain daripada bahagian biasa adalah baik selagi ia tidak menyebabkan ralat.

Berikut adalah contoh konfigurasi:

Setelah anda menaip, simpan projek.

Cipta fail .bat untuk penerbitan ClickOnce

Oleh kerana ia dikeluarkan dengan arahan, ia boleh dilaksanakan pada media lain seperti PowerShell, tetapi kali ini ia dicipta sebagai fail BAT.

Anda boleh mencipta fail di mana-mana sahaja, tetapi untuk tujuan kesederhanaan, saya akan menciptanya di lokasi fail penyelesaian (.sln). Oleh kerana ia adalah fail BAT, pengekodan watak adalah Shift-JIS. PS1 boleh menjadi UTF-8 (BOM).

Buka fail BAT dalam editor teks dan taip: Ambil perhatian bahawa PowerShell mungkin mengendalikan melarikan diri secara berbeza.

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". Laluan ini bergantung pada versi Visual Studio yang anda pasang.

Setiap bahagian laluan bergantung kepada syarat-syarat berikut:

Fail Atur Cara
Keadaan Laluan
Fail Atur Cara
  • Jika anda menggunakan OS 32-bit
  • Jika anda menggunakan versi Visual Studio 64-bit pada OS 64-bit
Fail Atur Cara (x86)
  • Jika anda menggunakan visual Studio versi 32-bit pada OS 64-bit
2022
Ia bergantung pada versi Visual Studio yang anda pasang.
Komuniti
Ia bergantung pada edisi Visual Studio yang anda pasang. "Komuniti", "Profesional", "Enterprise", dan lain-lain akan dimasukkan.

Baris kedua mengalihkan direktori semasa ke lokasi fail BAT.

Baris ketiga ialah perintah pemprosesan binaan ClickOnce. Makna setiap parameter adalah seperti berikut.

perihalan nama parameter
msbuild Perintah yang melaksanakan proses binaan. Diperlukan dan ditulis terlebih dahulu.
ClickOnceBuildConfiguration.sln Menerangkan nama fail penyelesaian yang akan dibina.
/t:Publish Menunjukkan proses binaan ClickOnce.
/p:Configuration=Debug Menentukan konfigurasi binaan yang telah anda tetapkan untuk penyelesaian anda. Jika anda ingin menukar konfigurasi nyahpepijat untuk dibina, ubah teks dalam bahagian "Nyahpepijat".
/p:PublishUrl="publish\Debug\\" Tulis ganti nilai "Lokasi folder awam" pada skrin penerbitan Visual Studio dengan rentetan yang ditentukan dan laksanakannya.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Tulis ganti nilai "URL folder pemasangan" pada skrin penerbitan Visual Studio dengan rentetan yang ditentukan dan laksanakannya.

Sesetengah parameter telah diekstrak, tetapi lihat pautan berikut untuk parameter lain:

Sebagai sampel kali ini, kami akan menukar parameter penerbitan ClickOnce dalam setiap penyahpepijat dan binaan Keluaran, jadi kami akan menciptanya seperti 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 Pelaksanaan Fail BAT

Cuba jalankan setiap fail BAT.

Gesaan arahan dilancarkan dan binaan bermula.

Sebenarnya, fail BAT yang dibuat kali ini hanya proses sehingga binaan, jadi fail itu tidak dibuat di "lokasi folder awam". Fail yang diperlukan untuk penerbitan telah dibuat. Sebagai contoh, dalam kes binaan nyahpepijat, anda sepatutnya mempunyai fail dalam laluan folder projek "< >\bin\Nyahpepijat\app.publish\". Salin fail ini ke "URL folder pemasangan" dan ia akan berfungsi dengan betul sebagai ClickOnce.

Terbitkan ke lokasi folder awam (jika destinasi ialah folder yang anda mempunyai capaian terus)

Laman web berikut digunakan sebagai rujukan untuk bahagian ini.

Kawasan ini tidak berkaitan secara langsung dengan pemprosesan ClickOnce, jadi sila rujuk laman web di atas untuk penjelasan terperinci.

Pertama, buka fail projek (.csproj) dalam editor teks. Ia bukan fail penyelesaian.

Di dalamnya terdapat struktur XML, dan jika anda menatal ke bahagian bawah, tambahkan </Project> kod berikut ke baris di atasnya. Sekiranya ia adalah proses premis salinan fail, kandungannya tetap, tetapi bahagiannya sewenang-wenangnya CopyPublishedApplication . Kau 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 sebaik sahaja anda telah memasukkannya.

Kemudian buka setiap fail BAT dan tambah ke /t:CopyPublishedApplication parameter msbuild. CopyPublishedApplication adalah nama yang saya berikan 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\\"

Apabila anda menjalankan fail BAT, anda dapat melihat bahawa fail itu disalin ke Lokasi Folder Awam. Pada masa ini, tidak ada nama program < >.exe fail, tetapi tidak perlu kerana ia pada asalnya termasuk dalam persediaan.exe.

Tambahan

Sekiranya terdapat banyak projek dalam penyelesaiannya, jalankan CopyPublishedApplication untuk semua projek. Dalam kebanyakan kes, ia hanya ditetapkan kepada projek exe, jadi ralat akan dipaparkan apabila berjalan dalam CopyPublishedApplication projek lain, Adalah selamat untuk mengabaikannya kerana ia hanya memaparkan mesej.

Terbitkan ke lokasi folder awam (untuk FTP)

Saya belum mencubanya, tetapi anda mungkin ingin merujuk kepada laman web berikut.

Perkara lain yang perlu diingat