4

我正在使用 Msbuild 4.0。当我使用 Msbuild 3.5 OverwriteReadonlyfiles 工作时没有任何问题。

但是今天当我尝试使用复制任务时,我遇到了这个问题。

错误 MSB4064:

“复制”请求不支持“OverwriteReadOnlyFiles”参数。验证该参数是否存在于任务中,并且它是一个可设置的公共实例属性。

这是我的目标,它有复制任务

<Target Name="CopyBOM">

    <Copy SourceFiles="@(BOM)" DestinationFolder="%(BOM.Destination)" OverwriteReadOnlyFiles="true">
      <Output TaskParameter="CopiedFiles" ItemName="CopyBOMFiles" />
    </Copy>

    <Message Text="Copied to BOM: @(CopyBOMFiles)"/>


  </Target>

以下是我在属性文件中使用的项目组

 <BOM Include="..\..\..\Release\CoreDeployment.msi">
      <Destination>..\..\..\Core\BOM\Comp1</Destination>
 </BOM>

我有多个属性文件,我已经验证在所有地方都放置了 Toolsversion=4.0。有没有人遇到过这种情况?有什么办法可以解决这个问题?

4

2 回答 2

11

我正在使用 OverwriteReadOnlyFiles="true" 没有问题。尝试将 ToolsVersion="4.0" 添加到您的项目标签中:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
于 2012-01-18T12:55:56.750 回答
6

您很可能正在处理 ToolsVersion 问题,即使您说您已经检查了所有文件及其导入。从文件中省略 ToolsVersion 会导致它下降到较低版本,因此如果您所做的只是搜索“ToolsVersion”,您可能会错过一个根本没有在 <Project> 节点上声明的文件。

使用以下附加参数运行带有诊断级别日志记录的命令行构建:

> msbuild My.proj /fl /flp:v=diag;logfile=My.proj.diagnostic.log

构建失败后,打开日志文件,搜索“MSB4064”,然后回溯文件以查找指定 2.0 框架的任何内容。

于 2012-01-26T00:48:32.013 回答