[解決済み] VS2010 Web 展開パッケージを使用して、追加ファイルをインクルードする方法は?
質問
Visual Studio 2010 の新しい Web パッケージング機能を使用してテストしているところ、プレビルド イベントを使用して、私のアプリが API 呼び出しに依存する必要な .dll を bin フォルダにコピーするという状況に遭遇しました。これらは、相互運用で使用できる COM dll ではないため、参照として含めることはできません。
配置パッケージを構築する際、アプリの実行に必要なファイルのみを含めるというオプションを選択すると、これらのファイルは除外されます。これらのファイルを含めるように配置設定を構成する方法はありますか? これに関する良いドキュメントを見つけることができませんでした。
どのように解決するのですか。
素晴らしい質問ですね。私はこれに関して非常に詳細なブログ エントリを次のサイトに投稿しました。 Web Deployment Tool (MSDeploy) : 余分なファイルを含む、または特定のファイルを含まないパッケージの構築 .
以下は、その概要です。ファイルを含めた後、同様にファイルを除外する方法を紹介します。
追加ファイルをインクルードする
パッケージに追加ファイルを含めるのは少し難しいですが、MSBuildに慣れている人なら大したことはありません。 これを行うには、パッケージングのためにファイルを収集するプロセスの一部にフックする必要があります。拡張する必要があるターゲットはCopyAllFilesToSingleFolderという名前です。このターゲットには PipelinePreDeployCopyAllFilesToOneFolderDependsOn という依存プロパティがあり、これを利用して独自のターゲットをインジェクトすることができます。そこで、CustomCollectFilesという名前のターゲットを作成し、それをプロセスに注入します。これを実現するには、以下のようにします(import文の後を覚えておいてください)。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
<CopyAllFilesToSingleFolderForMsdeployDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForMsdeployDependsOn);
</CopyAllFilesToSingleFolderForMsdeployDependsOn>
</PropertyGroup>
これでターゲットがプロセスに追加されましたが、次にターゲット自体を定義する必要があります。Webプロジェクトの1つ上の階層にExtra Filesというフォルダがあると仮定します。これらのファイルをすべてインクルードしたいと思います。ここにCustomCollectFilesターゲットがあり、その後に説明します。
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Extra Files\**\*" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>Extra Files\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
ここで私が行ったのは、_CustomFilesという項目を作り、Include属性でそのフォルダとその下のフォルダにあるすべてのファイルをピックアップするように指示したことです。もし万が一、あなたが
を除外する
そのリストから何かを除外する必要がある場合は
Exclude
属性に
_CustomFiles
.
次に、この項目を使用して FilesForPackagingFromProject 項目に入力します。これは、MSDeployが実際に追加ファイルを追加するために使用するアイテムです。また、メタデータの DestinationRelativePath 値を宣言したことに注目してください。これは、パッケージ内に配置される相対パスを決定するものです。ここでは、Extra Files%(RecursiveDir)%(Filename)%(Extension) というステートメントを使用しています。これは、Extra Filesフォルダの下にあるのと同じパッケージ内の相対的な場所に配置することを意味します。
ファイルの除外
VS 2010で作成されたWebアプリケーションのプロジェクトファイルを開くと、その一番下の方に
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
ちなみに、プロジェクトファイルはVSの中で開くことができます。プロジェクト上で右クリックし、Unload Projectを選択します。次に、アンロードされたプロジェクト上で右クリックし、プロジェクトの編集を選択します。
このステートメントには、必要なすべてのターゲットとタスクが含まれています。カスタマイズのほとんどは、インポートの後に行う必要があります。除外するファイルがある場合、ExcludeFromPackageFiles という項目があり、これを使用することができます。例えば、Webアプリケーションに含まれるSample.Debug.xmlというファイルがあり、そのファイルを作成されるパッケージから除外したいとします。この場合、import文の後に以下のスニペットを記述します。
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
この項目にpopulationを宣言することで、自動的にファイルが除外されます。また
FromTarget
メタデータの使い方に注意してください。ここでは触れませんが、必ず指定するように知っておいてください。
関連
-
[解決済み] IISが起動URLと一致するウェブサイトをリストアップしない
-
[解決済み] System.Data.Entity.Infrastructure´のリファレンスは何ですか?
-
[解決済み] キーファイル 'blah.pfx' をインポートできない - エラー 'The keyfile may be password protected'.
-
[解決済み】Visual Studioでaspx/ascxファイルの.designerファイルを強制的に再生成する方法とは?
-
[解決済み】Visual StudioでXMLコメント欠落の警告を無効にする。
-
[解決済み】ソリューションで使用されていないNuGetパッケージを見つけるにはどうすればよいですか?
-
[解決済み] BOMなしUTF-8
-
[解決済み] Visual StudioのコマンドプロンプトでPowerShellを使用するにはどうすればよいですか?
-
[解決済み] F12 Jump to the method -> ジャンプした後、前のメソッドに戻る?
-
[解決済み] レポート作成時に「レポートデータ」ウィンドウが表示されないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] プロジェクトを実行しようとしているときにエラーが発生しました。Unable to start debugging
-
[解決済み] Visual Studio (VS) Build時に「Root element is missing.」と表示された場合の対処方法
-
[解決済み] クロームとファイヤフォックスでローカルホストが機能しない
-
[解決済み】Visual Studio 2010 - C++ プロジェクト - *.sdf ファイルを削除する。
-
[解決済み】Visual Studio 2010+ですべてのブレークポイントを確認する
-
[解決済み】「証明書ストアでマニフェスト署名証明書が見つかりません」-新しいキーを追加した場合も同様
-
[解決済み】NuGetパッケージをソリューションの2番目のプロジェクトにインストールするにはどうすればいいですか?
-
[解決済み] Visual Studio 2010でCtrl+scrollのズームを無効にする方法は?
-
[解決済み] F12 Jump to the method -> ジャンプした後、前のメソッドに戻る?
-
[解決済み] レポート作成時に「レポートデータ」ウィンドウが表示されないのはなぜですか?