Msbuild 向XYZ.csproj.FileListAbsolute.txt添加文件的正确方法是什么?

Msbuild 向XYZ.csproj.FileListAbsolute.txt添加文件的正确方法是什么?,msbuild,Msbuild,我的构建代码在bin文件夹中创建了一个额外的文件。我想在溶液清洗后再清洗。但是,文件名由项目的AssemblyName属性确定。因此,如果更改了此属性(很少见,但会发生),则清除旧文件的唯一方法是将其写入XYZ.csproj.FileListAbsolute.txt 每当我创建文件时,我是只写XYZ.csproj.FileListAbsolute.txt呢,还是有更好的方法呢?好的,我找到了 只需将文件添加到FileWrites项目列表中,如下所示: <ItemGroup> &l

我的构建代码在bin文件夹中创建了一个额外的文件。我想在溶液清洗后再清洗。但是,文件名由项目的AssemblyName属性确定。因此,如果更改了此属性(很少见,但会发生),则清除旧文件的唯一方法是将其写入XYZ.csproj.FileListAbsolute.txt

每当我创建文件时,我是只写XYZ.csproj.FileListAbsolute.txt呢,还是有更好的方法呢?

好的,我找到了

只需将文件添加到
FileWrites
项目列表中,如下所示:

<ItemGroup>
  <FileWrites Include="$(SomeFileYouWantCleanedUpOnClean)"/>
</ItemGroup>


在我的代码中,这是目标的一部分,而不是在预编译和预重建之前运行,但在全局范围中定义时,它也可以工作。

清理文件的正确方法是在*.csproj文件中编写自己的生成目标。像这样:

<Target Name="MyClean" AfterTargets="Clean">
  <ItemGroup>
    <ToBeCleaned Include="$(SomeFileYouWantCleanedUpOnClean)"/>
  </ItemGroup>
  <Delete Files="@(ToBeCleaned)" />
</Target>


您永远不必修改(也不必关心)FileListAbsolute.txt文件。

在我的示例中,我让它在清理后运行。但是你以前也让它跑过。这取决于您。msbuild使用此文件来处理重命名是有原因的。如果我的文件名在实现过程中发生更改,则旧文件将保留在磁盘上。