Msbuild 错误MSB4064:;“覆盖所有文件”;参数不受";“复制”;任务

Msbuild 错误MSB4064:;“覆盖所有文件”;参数不受";“复制”;任务,msbuild,msbuild-task,msbuild-4.0,Msbuild,Msbuild Task,Msbuild 4.0,我正在使用Msbuild 4.0。当我使用Msbuild 3.5 OverwriteReadonlyfiles时,没有任何问题 但是今天当我尝试使用复制任务时,我遇到了这个问题 错误MSB4064: 不支持“OverwriteReadOnlyFiles”参数 按“抄袭”的说法,我不问。验证任务上是否存在该参数,并且 是可设置的公共实例属性 这是我的目标,它有复制任务 <Target Name="CopyBOM"> <Copy SourceFiles="@(BOM)"

我正在使用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>

..\..\..\Core\BOM\Comp1
我有多个属性文件,我已经验证了Toolsversion=4.0在所有位置都被放置。
有人面对过这个问题吗?有什么办法可以解决这个问题吗?

我使用OverwriteReadOnlyFiles=“true”没有任何问题。尝试将ToolsVersion=“4.0”添加到项目标记中:

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">

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

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

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

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

+1或至少3.5,因为这是在
复制任务上支持该属性的第一个版本。谢谢,在其中一个属性文件中,toolsversion为空,默认情况下,它被视为2.0。感谢您指定diag选项(尽管我知道我忘记了)。也谢谢你的书。我们有15个批处理文件来构建我们的组件。这是我在msbuild中使用的技巧之一,我现在正在删除这些批处理文件。