VS2010 Web展開パッケージを使用して追加のファイルをどのように含めるかで、同様の異なる質問に回答しました。。
ビルド後のイベントを使用しているシナリオでは、ビルド後のイベントを削除し、ビルド後のイベントではなく、独自のMSBuildターゲットを使用してアクションを実装することをお勧めします。以下に他の回答のテキストがあります。
差出人:VS2010 Web展開パッケージを使用して追加のファイルをどのように含めますか?
素晴らしい質問です。これに関する非常に詳細なブログエントリをWebDeploymentTool(MSDeploy)に投稿しました:追加のファイルを含む、または特定のファイルを除外するパッケージをビルドします。
概要は次のとおりです。ファイルを含めた後、ファイルを除外する方法も示します。
余分なファイルを含む
パッケージに余分なファイルを含めるのは少し難しいですが、MSBuildに慣れている場合、そしてこれを読んでいない場合は、それでも大したことはありません。これを行うには、パッケージ化のためにファイルを収集するプロセスの一部にフックする必要があります。拡張する必要のあるターゲットはと呼ばれCopyAllFilesToSingleFolder
ます。このターゲットには依存関係プロパティがありPipelinePreDeployCopyAllFilesToOneFolderDependsOn
、これを利用して独自のターゲットを挿入できます。そこで、という名前のターゲットを作成し、CustomCollectFiles
それをプロセスに注入します。これは、次の方法で実現します(importステートメントの後で覚えておいてください)。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
これにより、ターゲットがプロセスに追加されます。次に、ターゲット自体を定義する必要があります。Webプロジェクトの1レベル上にあるExtraFilesという名前のフォルダーがあると仮定します。これらのファイルをすべて含める必要があります。これが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)
ました。つまり、ExtraFilesフォルダーの下にあるのと同じパッケージ内の相対的な場所に配置するということです。
ファイルを除外する
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
ここでメタデータの使用法に注意してください。ここでは詳しく説明しませんが、常に指定することを知っておく必要があります。