実稼働ビルド スクリプトの bin フォルダーから Obj ディレクトリと PDB を削除する MSBuild タスクを作成しようとしていますが、正しく動作しないようです。
これまたは同様のことを行う例、またはMSBuildでファイルとディレクトリを削除する簡単な例へのリンクはありますか?
実稼働ビルド スクリプトの bin フォルダーから Obj ディレクトリと PDB を削除する MSBuild タスクを作成しようとしていますが、正しく動作しないようです。
これまたは同様のことを行う例、またはMSBuildでファイルとディレクトリを削除する簡単な例へのリンクはありますか?
これらのディレクトリ内のファイルを最初に削除してから、ディレクトリ自体を削除できます。
<Target Name="SomeTarget">
<ItemGroup>
<FilesToDelete Include="Path\To\Obj\**\*"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)" />
<RemoveDir Directories="Path\To\Obj\" />
</Target>
私が抱えていたのと同じ問題に遭遇した可能性のある他の人のために投稿します。
MSBuildがTFSから最新のものを取得すると、ファイルは読み取り専用としてマークされるため、削除タスクは読み取り専用ファイルを削除できません。これを行う必要がありました。EXEC コマンドを使用して、読み取り専用ファイルを削除しました。
<ItemGroup>
<FileToDelete Include="c:\temp\fileToDelete.txt"/>
</ItemGroup>
<Exec Command="del /F /Q "@(FileToDelete)""/>
このコードは非常に醜いので、飛行機酔いバッグが付属している必要があります。;-) しかし、削除するファイルのリストなどを作成しないため、高速です。
<Target Name="DeleteBuildFolder">
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
<Exec Command="RmDir /S /Q "$(BuildFolder)"" />
</Target>
RmDir コマンドはいくつ必要ですか? いくつかの RmDir コマンドは、「ディレクトリが空ではありません」ではなく、「指定されたファイルが見つかりません」を返します。私のマシンでは、Windows エクスプローラーで $(BuildFolder) が開いている場合、別の RmDir が必要なようです。ウイルス対策プログラムは、Subversion と同じように RmDir に影響を与える可能性がありますが、除外リストを (誤って) 管理するよりも、包括的な AV 保護を使用したいと考えています。
最初にファイルから読み取り専用プロパティを削除し、msbuild delete タスクを実行することもできます。
そのようです:
<Target Name="DeleteFiles">
<Message Text="Delete File" Importance="high"/>
<Attrib Files="$(FileToDelete)" ReadOnly="false" />
<Delete Files="$(FileToDelete)" />
</Target>`
</Project>
Visual Studio 2013 では、これを .csproj ファイルの末尾の終了タグの直前に追加しました
<Target Name = "clean_folders" AfterTargets="Clean">
<Exec Command = "rd /S /Q obj" />
<Exec Command = "rd /S /Q bin" />
</Target>
最初は動作していないように見えましたが、Visual Studio (または R#、確かではありません)DesignTimeResolveAssemblyReferencesInput.cache
が obj フォルダーに再追加され、現在の\bin
フォルダーも再追加されていることに気付きました (下の異なるサブフォルダーに異なるビルドがあります) \bin
)。インポートした.csprojファイルから持っている25の他のビルド構成を含め、他のすべてを一掃しました(はい、知っています)。
複数の構成をバッチ再構築する場合は注意してください。再構築するたびに以前のすべての作業が消去され、最後のものだけが残ります。おっと。
私が発見したしわをもう 1 つ追加するだけです。私はVisual Studio 2015を使用しています。ワイルドカードを介して削除されている投稿された回答は、まだ面倒です。 ワイルドカードは、ビルドの後ではなく、ビルドの前に評価されると思われます。つまり、削除したいファイルがビルド中に作成された場合、削除は行われません。また、ビルドするたびに削除が機能するという素晴らしい動作にもつながります。これにより、テストが非常に楽しくなります。
ワイルドカードをあきらめています。私がやっていることについては、問題を引き起こしているファイルを知っており、実際のファイル名をハードコーディングしています (プロジェクトファイル内でそれを呼び出すことができる場合)。