2016-08-13 9 views
1

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など)。ただし、ネイティブディレクトリに別のフォルダを追加すると、それらのフォルダやファイルも削除されるように一般的なものにしたいと考えています。

答えて

1

入力ファイルと出力ファイルを一覧表示する別個のターゲットを使用し、そのリストを他の両方のターゲットで使用します。これはDestinationFoldersの代わりにCopyタスクのDestinationFiles属性を使用することに注意してください。また、トップディレクトリが子ディレクトリの前にすでに削除されているため、RemoveDirに渡される存在しないディレクトリに関するメッセージが表示されることがあります。

アップデートルート出力ディレクトリを削除する必要がないため、「空の場合は出力ディレクトリを削除してください」という原則を適用すると、おそらく最も安全な方法です。クレジットはthe answer hereになります。

+0

"bin \ Debug \\"ディレクトリを削除できません。 'HTA.vshost.exe'へのアクセスが拒否されました。 "デバッグフォルダを削除しないでください。 – Robert

+0

a)ディレクトリ構造とb)削除したいものを明確にするために質問を編集してください。 – stijn

+0

私の質問が更新されました – Robert

関連する問題