我的Web.config文件中有下一个配置
<Target Name="UpdateWebConfigForProjectsBeforeRun">
<ItemGroup>
<FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>
</ItemGroup>
<Message Text="Transform file: %(FilesToTransofm.Identity)" />
<TransformXml Source="web.config"
Transform="%(FilesToTransofm.Identity)"
Destination="web.config" />
</Target>
我正在尝试从ProjectsDeployBin目录获取所有配置并将每个文件应用于主web.config。
第一次转换后,主要的web.config被msbuild锁定。
那么我该如何解决这个问题呢?有没有其他方法可以通过文件集合转换我的web.config? 感谢。
答案 0 :(得分:8)
正如您所注意到的,Visual Studio 2010附带的TransformXml任务存在一个错误,导致源文件被锁定。
要解决此问题,您可以在每次转换之前制作源文件的临时副本。 由于您将为每个转换文件(复制和转换)执行多个任务,因此您需要切换到Target Batching而不是Task Batching。
示例:
<ItemGroup>
<FilesToTransofm Include="ProjectsDeployBin\Web.*.$(Configuration).config"/>
</ItemGroup>
<Target Name="UpdateWebConfigForProjectsBeforeRun"
Inputs="@(FilesToTransofm)"
Outputs="%(Identity).AlwaysRun">
<Message Text="Transform file: %(FilesToTransofm.Identity)" />
<Copy SourceFiles="web.config"
DestinationFiles="web.pre-%(FilesToTransofm.Filename).temp.config" />
<TransformXml Source="web.pre-%(FilesToTransofm.Filename).temp.config"
Transform="%(FilesToTransofm.Identity)"
Destination="web.config" />
</Target>
从快速测试看,Visual Studio 2012中修复了这个错误,但是我无法找到记录该错误的参考/来源,并且original Connect bug无法查看了。