为什么MSBuild对文件保持挂起状态?
我有以下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
<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的人。我现在使用的是更高版本,但没有。