Visual Studio からの ClickOnce 発行で出来ること出来ないこと

どこかにうまいことまとまっていませんかね。もう VS2010 な時期ですが、VS2005 はともかく VS2008 はまだ主流でしょうし、最低限おさえておく情報として、

* http://blogs.msdn.com/tsmatsuz/archive/2006/08/16/701993.aspx
* Creating ClickOnce Applications for Others to Deploy - Visual Studio 2015 | Microsoft Docs
* Walkthrough: Manually Deploying a ClickOnce Application that Does Not Require Re-Signing and that Preserves Branding Information - Visual Studio | Microsoft Docs

あたりがすぐにあげられる。特に最初の内容は目を通してそんは無い。なお、その中の質問事項に「参照先のアセンブリや設定ファイルなど、複数のファイルをインストールさせることはできますか」というものがあり、

Visual Studio の機能を使用して、ソリューション内でアセンブリを分割し(ソリューション内で別プロジェクトとして作成して参照設定しておき)、さらにアプリケーション構成ファイル (App.config) などを作成した場合には、Visual Studio が判断し、それぞれのファイル (アセンブリや構成ファイル) についても自動でデプロイファイルとこれらに関するマニフェストの情報が作成され、ClickOnce によってデプロイされるのが確認できます。

とありますが、VS2008*1では、参照先プロジェクトに含まれる構成ファイル等のコンテンツファイルをデプロイファイルとして収集することはできませんので注意が必要です。構成ファイル等のコンテンツファイルがデプロイファイルとして収集されるのは、ClickOnce で発行を実行する対象プロジェクトのみです。*2

他にも、配置マニフェストファイルの名前をプロパティで指定できますが、作成される配置マニフェストファイルの中身に記述される Name 属性は固定で「アセンブリ名.Application」となります。このため、2番目の文章で記載されているような配置マニフェストの Name 属性を利用した簡単な複数配置の作成には Mage/MageUI を利用したり GenerateDeploymentManifest タスクのパラメータ処理をすべて書き直す必要があります。*3

*1:正確には、Visual Studio 2008 が使用している .NET Framework 3.5 で提供されている msbuild のビルドルールでは...ですが

*2:これは、コンテンツファイルが再帰的なビルドプロセスによって bin/Debug 等の出力先へと収集されるが、パブリッシュプロセスでは出力先に収集されたファイルではなく、ビルドプロセスによる出力対象となったファイルを非再帰的に収集しているためです

*3:すべて書き直す必要があるのは、Name 属性に与えるパラメータプロパティがオーバーライド不可能プロパティで定義されているため