AfterCleanターゲットでdllとフォルダ名をハードコーディングしないようにしたいのですが、動的な方法がありますか?理想的には、AfterBuildターゲットのコピーによって作成されたファイルとフォルダのみが削除されます。AfterBuildターゲットからコピーされたファイルとフォルダを削除する
IはOutputPathにサブディレクトリを含むようにDestinationFolderを変更することによって、これを簡素化することを試みました。 AfterCleanターゲットは、この時点でそのサブディレクトリを削除するだけで済みます。しかし、ライブラリのDLLImportパスの中には、そのサブディレクトリを考慮しないため、クラッシュすることがあります。
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterBuild">
<ItemGroup>
<NativeLibs Include="$(MSBuildThisFileDirectory)..\lib\native\**\*.*" />
</ItemGroup>
<Copy SourceFiles="@(NativeLibs)" DestinationFolder="$(OutputPath)\%(RecursiveDir)" />
</Target>
<Target Name="AfterClean">
<Delete Files="$(OutputPath)\LumiAPI.dll" />
<Delete Files="$(OutputPath)\LumiCore.dll" />
<Delete Files="$(OutputPath)\LumiInOpAPI.dll" />
<RemoveDir Directories="$(OutputPath)\SPM" />
<RemoveDir Directories="$(OutputPath)\plugin" />
</Target>
</Project>
プロジェクト構造:
SRC
ConsumingProject
- ConsumingProject.csproj
Consumin gProject.sln
パッケージ
私-project.5.7.0.12
ビルド
libに
ネイティブ
プラグイン
- VenusDvc.dll
SPM
- sSPM_1.bin
LumiAPI。 DLL
LumiCore.dll
はLumiInOpAPI.dll
net45
私-project.5.7.0.12。nupkg
基本的に私はすなわちLumiAPI.dll、LumiCore.dll、SPM(フォルダ(プロジェクトの出力にネイティブのフォルダからコピーされたすべてのファイルとフォルダを削除します)、eSPM_1.binなど)。ただし、ネイティブディレクトリに別のフォルダを追加すると、それらのフォルダやファイルも削除されるように一般的なものにしたいと考えています。
"bin \ Debug \\"ディレクトリを削除できません。 'HTA.vshost.exe'へのアクセスが拒否されました。 "デバッグフォルダを削除しないでください。 – Robert
a)ディレクトリ構造とb)削除したいものを明確にするために質問を編集してください。 – stijn
私の質問が更新されました – Robert