错误MSB4064:"复制"任务不支持"OverwriteReadOnlyFiles"参数

Sam*_*abu 4 msbuild msbuild-task msbuild-4.0

我正在使用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>
Run Code Online (Sandbox Code Playgroud)

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

 <BOM Include="..\..\..\Release\CoreDeployment.msi">
      <Destination>..\..\..\Core\BOM\Comp1</Destination>
 </BOM>
Run Code Online (Sandbox Code Playgroud)

我有多个属性文件,我已经验证在所有地方都放置了Toolsversion = 4.0.有没有人面对这个?有什么方法可以解决这个问题吗?

Lud*_*dwo 11

我正在使用OverwriteReadOnlyFiles ="true"而没有问题.尝试将ToolsVersion ="4.0"添加到Project标记中:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
Run Code Online (Sandbox Code Playgroud)

  • +1或至少3.5,因为这是第一个在"复制"任务上支持该属性的版本. (2认同)

Bri*_*ler 6

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

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

> msbuild My.proj /fl /flp:v=diag;logfile=My.proj.diagnostic.log
Run Code Online (Sandbox Code Playgroud)

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