私はVS2010 Web展開パッケージを使用して追加のファイルをどのように含めますか?。
ビルド後のイベントを使用しているシナリオでは、ビルド後のイベントを削除し、ビルド後のイベントの代わりに独自のMSBuildターゲットを使用してアクションを実装することをお勧めします。以下に、他の回答のテキストを示します。
From:VS2010 Web展開パッケージを使用して追加のファイルをどのように含めますか?
すばらしい質問です。これについての非常に詳細なブログエントリをWeb配置ツール(MSDeploy)に投稿しました。パッケージを追加するか、特定のファイルを除外します。
こちらがその概要です。ファイルを含めた後、ファイルを除外する方法も示します。
追加ファイルを含める
パッケージに追加のファイルを含めることは少し難しいですが、MSBuildに慣れていて、これを読んでいなければ、まだ大したことはありません。これを行うには、パッケージ化するファイルを収集するプロセスの一部にフックする必要があります。拡張する必要があるターゲットは、CopyAllFilesToSingleFolderと呼ばれます。このターゲットには依存関係プロパティPipelinePreDeployCopyAllFilesToOneFolderDependsOnがあり、これを使用して独自のターゲットを挿入できます。したがって、CustomCollectFilesという名前のターゲットを作成し、それをプロセスに注入します。これを実現するには、次のようにします(importステートメントの後を思い出してください)。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</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属性にそのフォルダーとその下のフォルダー内のすべてのファイルを取得するように指示したことです。次に、このアイテムを使用して、FilesForPackagingFromProjectアイテムを設定します。これは、MSDeployが実際に追加のファイルを追加するために使用するアイテムです。また、メタデータのDestinationRelativePath値を宣言したことにも注意してください。これにより、パッケージに配置される相対パスが決まります。ここでは、Extra Files%(RecursiveDir)%(Filename)%(Extension)というステートメントを使用しました。それが言っていることは、それをパッケージ内の同じ場所に追加ファイルフォルダーの下にあるのと同じ場所に配置することです。
ファイルを除外する
VS 2010で作成されたWebアプリケーションのプロジェクトファイルをその下部に向かって開くと、次の行が見つかります。
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
ところで、VS内でプロジェクトファイルを開くことができます。プロジェクトを右クリックして、[プロジェクトのアンロード]を選択します。次に、アンロードしたプロジェクトを右クリックして、[プロジェクトの編集]を選択します。
このステートメントには、必要なすべてのターゲットとタスクが含まれます。ほとんどのカスタマイズは、インポート後に行う必要があります。したがって、除外するファイルがある場合、そのために使用できるアイテム名ExcludeFromPackageFilesがあります。たとえば、Webアプリケーションに含まれているSample.Debug.jsという名前のファイルがあるが、作成したパッケージからそのファイルを除外したいとします。以下のスニペットは、インポートステートメントの後に配置できます。
<ItemGroup>
<ExcludeFromPackageFiles Include="Sample.Debug.xml">
<FromTarget>Project</FromTarget>
</ExcludeFromPackageFiles>
</ItemGroup>
このアイテムの入力を宣言すると、ファイルは自動的に除外されます。ここでFromTargetメタデータの使用方法に注意してください。ここでは詳しく説明しませんが、必ず指定する必要があります。