为什么MSBuild对文件保持挂起状态?

为什么MSBuild对文件保持挂起状态?,msbuild,Msbuild,我有以下MSBuild脚本: <Copy SourceFiles="$(AdminPath)\web.config" DestinationFiles="$(AdminPath)\tmpweb.config" /> <TransformXml Source="$(AdminPath)\tmpweb.config" Transform="$(AdminPath)\web.$(Configuration).config" Destination="$(AdminPath)\web2

我有以下MSBuild脚本:

<Copy SourceFiles="$(AdminPath)\web.config" DestinationFiles="$(AdminPath)\tmpweb.config" />
<TransformXml Source="$(AdminPath)\tmpweb.config" Transform="$(AdminPath)\web.$(Configuration).config" Destination="$(AdminPath)\web2.config" />
<Copy Sourcefiles="$(AdminPath)\web2.config" DestinationFiles="$(AdminPath)\web.config" OverwriteReadOnlyFiles="true" />
<Delete Files="$(AdminPath)\tmpweb.config;$(AdminPath)\web2.config" />

但是,尽管删除了web2.config,但tmpweb.config不是“因为另一个进程正在使用它”(错误MSB3061)

我该怎么做


我已尝试按中所述复制文件,但似乎也不起作用。

我使用的是v10发布任务。我应该用v12

供将来参考,请使用以下内容:


锁定文件的不是MSBuild,而是TransformXml任务,在某些部署策略下,它非常烦人。您可以从中尝试解决方法,我个人通过
TransformXml
任务类或直接通过
XmlTransformation
类将其包装在自定义任务中,这提供了额外的灵活性,例如通过
IXmlTransformationLogger
进行日志记录,ie将某些警告降级以调试消息,以减少日志中的噪音。

我使用的是较旧版本的transformxml。一个带有锁定文件的bug的人。我现在使用的是更高版本,但没有。