C#

ClickOnceを外す

Visual StudioでプロジェクトのClickOnceを外すのに大変苦労したので、メモしておきます。環境はWindows 7/Visual Studio 2008で、問題となったソリューションはマシンの入れ替えに伴い、Windows Vista/Visual Studio 2005から移したものでした。このソリューションには11個のクラス ライブラリと1つのWindows フォーム アプリケーションがあり、アセンブリの署名を行っています。遠い昔にClickOnceを試しましたが、どうも良くないなと思い、ClickOnceを使わないことにしました。その時は特に問題ありませんでした。そうして月日が流れ、新しいマシン/環境で久しぶりにソリューションをビルドすると、エラーになってビルドできない状態でした。

Unable to find manifest signing certificate in the certificate store.

ClickOnceを使わないようにしてありますが、おそらく前のマシンでは証明書ストアに目当ての証明書があって、それを見ていたのだと思います。Microsoftのサイトで調べると、プロジェクトのプロパティで「ClickOnce マニフェストに署名する」のチェックを外せばエラーを回避できるように書いてありましたが、既に外れています。試しに「アセンブリの署名」のチェックを外したらビルドが通ったので、「アセンブリの署名」と何か関係があるのかと思いました。ClickOnceの設定はすべて外してありますし、別のプロジェクトのプロパティと見比べてみても、違いが見つかりません。一度ClickOnceの設定をしたら、二度と元には戻せないのか、アセンブリの署名を外すしかないのかと思いつめ、途方にくれました。

情報がなかなか見つからず苦労しましたが、ふぅみん氏の「気晴日記」(http://fne.cocolog-nifty.com/blog/)の記事「S9eにVisualStudio2008を導入してみる」(http://fne.cocolog-nifty.com/blog/2009/07/s9evisualstudio.html)に、私と似たような状況が書かれているのを見つけました。でも、解決には至っていないようでした。そして、ようやく見つけたのが、Piyotch氏の「業務アプリケーションエンジニアの日常」(http://ameblo.jp/piyopiyo-works/)の記事「ClickOnceマニフェストに署名するのチェックボックスがグレーアウト」(http://ameblo.jp/piyopiyo-works/entry-12025567142.html)でした。書かれているとおりに、csprojファイルをテキストエディタで開いて<ManifestCertificateThumbprint>と<ManifestKeyFile>を削除したらエラーが出なくなりました。感謝いたします。インターネットは大変ありがたいものですね。

「ClickOnce マニフェストに署名する」と「アセンブリの署名」との関係は未だによくわかりませんが、今回はここまでです。

(2015/11/04 初稿)