.csproject ファイルを少し拡張して、いくつかのプロジェクトでこれを行いました。次のコードはProject
、WebProject.csproj のノードのすぐ下に配置する必要があります。ターゲットはAfterBuild
、Visual Studio から通常どおりにビルドするときに、一連のファイル (この場合は "参照されていない DLL") を bin フォルダーにコピーするだけです。CustomCollectFiles は、デプロイ時に基本的に同じことを行います。
<PropertyGroup>
<UnreferencedDlls>..\lib\Unreferenced\**\*.dll</UnreferencedDlls>
</PropertyGroup>
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="AfterBuild">
<Message Text="Copying unreferenced DLLs to bin" Importance="High" />
<CreateItem Include="$(UnreferencedDlls)">
<Output TaskParameter="Include" ItemName="_UnReferencedDLLs" />
</CreateItem>
<Copy SourceFiles="@(_UnReferencedDLLs)" DestinationFolder="bin\%(RecursiveDir)" SkipUnchangedFiles="true" />
</Target>
<Target Name="CustomCollectFiles">
<Message Text="Publishing unreferenced DLLs" Importance="High" />
<ItemGroup>
<_CustomFiles Include="$(UnreferencedDlls)" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>bin\%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
変更する必要がある部分は、基本的に、UnreferencedDlls
フォルダー構造に合わせてノードです。この**\*.dll
部分は、単に「この下の任意のレベルにあるすべての DLL ファイル」を意味します。