Visual Studio (Preview) + .NET 10 で ClickOnce 発行時に setup.exe が作成されない不具合の対処法

2025年12月11日木曜日

プログラミング

t f B! P L

Visual Studio 2026 (Preview) 環境にて、.NET 10 (Windows Forms) のアプリケーションを ClickOnce で発行しようとした際、GUI 上では成功しているように見えるものの、実際にはインストーラー(setup.exe)が作成されないという現象に遭遇しました。

その原因と、コマンドラインを使った解決策をまとめます。

1. 起きた不具合

Visual Studio の「発行」ウィザードから ClickOnce の発行を行いました。
ビルドログには「正常に終了しました」と表示される、あるいはパスが見つからない旨のエラーが表示されるものの、指定した発行先フォルダ(app.publish)を確認すると、以下のいずれかの状態になっていました。

  • フォルダ自体が存在しない
  • フォルダは作成されたが中身が空
  • bin\publish という別のフォルダに、実行ファイルだけが出力され、setup.exe やマニフェストファイルが存在しない

何度プロファイルを作り直しても、Visual Studio の画面から実行する限り解決しませんでした。

2. 原因

調査の結果、「Visual Studio の発行機能が、不適切なビルドコマンドを使用している」 ことが原因だと判明しました。

  • 現状の構成: .NET 10 (最新の .NET)
  • 使用したい機能: ClickOnce (従来の .NET Framework 時代から続くインストーラー作成技術)

ClickOnce のインストーラー(setup.exe)を作成するには、GenerateBootstrapper というタスクを実行する必要があります。しかし、このタスクは従来の完全版ビルドツールである msbuild.exe には含まれていますが、軽量版のクロスプラットフォームツールである dotnet コマンド には含まれていません。

Visual Studio (Preview) が、.NET 10 のプロジェクトであるためか、誤って dotnet コマンド(またはそれに準ずるCore版ビルド)で発行処理を行おうとし、結果として setup.exe の生成処理がスキップ(または失敗)されていました。

実際に dotnet コマンドで強制的に発行を試みると、以下のようなエラーが出力され、機能がサポートされていないことがわかります。


error MSB4803: タスク "GenerateBootstrapper" は .NET Core バージョンの MSBuild ではサポートされていません。.NET Framework バージョンの MSBuild をご使用ください。

3. 対処

Visual Studio の GUI ボタンを使わず、ターミナルから直接 msbuild コマンド を叩くことで解決しました。
dotnet を付けずに実行するのがポイントです。

手順:

  1. Visual Studio の「ターミナル」または PowerShell を開く。
  2. プロジェクトファイルのがあるディレクトリへ移動する。
  3. 以下のコマンドを実行する。

PublishProfile=xxxxx の部分は、ご自身の作成した発行プロファイル名(.pubxml のファイル名から拡張子を除いたもの)に書き換えてください。


# 正解: dotnet を付けずに msbuild を直接呼ぶ
msbuild /t:Publish /p:Configuration=Release /p:PublishProfile=ClickOnceProfile

これにより、本来の出力先である bin\Release\net10.0-windows\app.publish\ フォルダ内に、無事 setup.exeApplication Files が生成されました。

4. 今後

これは Visual Studio (Preview) 版特有の挙動、あるいは過渡期のバグである可能性が高いです。将来的には修正され、GUI の「発行」ボタンから正しく msbuild が呼び出されるようになると思われます。

それまでの間は、毎回コマンドを打つのも手間なので、プロジェクトフォルダに発行用のバッチファイル(.bat)を作成しておくことにしました。

publish.bat の例


@echo off
echo ClickOnce発行を開始します...

REM プロファイル名は実際の環境に合わせて変更してください
msbuild /t:Publish /p:Configuration=Release /p:PublishProfile=ClickOnceProfile

pause

今後はこのバッチファイルをダブルクリックするだけで、確実にインストーラーを作成できます。同じ現象に悩んでいる方は、GUI に頼らずコマンドラインからの発行を試してみてください。

検索

年月ごとアーカイブ

フレンドブログ

Translate

自己紹介

自分の写真
映画が好き! 音楽好き! 演奏も好き! ミキシングが一番好き!

QooQ