我对 msbuild 在 VS2008 Web 部署项目中的行为有一个奇怪的问题,我想知道为什么它似乎随机行为不端。
我需要从部署文件夹中删除一些应该只存在于我的开发环境中的文件。这些文件是在开发/测试期间由 Web 应用程序生成的,不包含在我的 Visual Studio 项目/解决方案中。
我使用的配置如下:
<!-- Partial extract from Microsoft Visual Studio 2008 Web Deployment Project -->
<ItemGroup>
<DeleteAfterBuild Include="$(OutputPath)data\errors\*.xml" /> <!-- Folder 1: 36 files -->
<DeleteAfterBuild Include="$(OutputPath)data\logos\*.*" /> <!-- Folder 2: 2 files -->
<DeleteAfterBuild Include="$(OutputPath)banners\*.*" /> <!-- Folder 3: 1 file -->
</ItemGroup>
<Target Name="AfterBuild">
<Message Text="------ AfterBuild process starting ------" Importance="high" />
<Delete Files="@(DeleteAfterBuild)">
<Output TaskParameter="DeletedFiles" PropertyName="deleted" />
</Delete>
<Message Text="DELETED FILES: $(deleted)" Importance="high" />
<Message Text="------ AfterBuild process complete ------" Importance="high" />
</Target>
我遇到的问题是,当我对 Web 部署项目进行构建/重建时,它“有时”会删除所有文件,但有时它不会删除任何东西!或者它只会删除 DeleteAfterBuild 项目组中三个文件夹中的一个或两个。构建过程何时决定删除文件似乎没有一致性。
当我编辑配置以仅包含文件夹 1(例如)时,它会正确删除所有文件。然后添加文件夹 2 和 3,它开始根据需要删除所有文件。然后,似乎在随机时间,我将重建项目,它不会删除任何文件!
我已经尝试将这些项目移动到 ExcludeFromBuild 项目组(这可能是它应该在的位置),但它给了我同样不可预测的结果。
有没有人经历过这个?难道我做错了什么?为什么会这样?