【问题标题】:error MSB4064: The "OverwriteReadOnlyFiles" parameter is not supported by the "Copy" task错误 MSB4064:“复制”任务不支持“OverwriteReadOnlyFiles”参数
【发布时间】:2012-01-18 11:52:51
【问题描述】:

我正在使用 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。 有没有人遇到过这种情况?有什么办法可以解决吗?

【问题讨论】:

    标签: msbuild msbuild-task msbuild-4.0


    【解决方案1】:

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

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

    【讨论】:

    • +1 或至少 3.5,因为这是第一个在 Copy 任务上支持该属性的版本。
    【解决方案2】:

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

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

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

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

    【讨论】:

    • 谢谢,在其中一个属性文件中,toolsversion 为空,默认为 2.0。感谢您指定诊断选项(虽然我知道我忘记了)。也谢谢你的书。我们有 15 个批处理文件来构建我们的组件。我在 msbuild 中使用的一个技巧,我现在正在删除这些批处理文件。
    猜你喜欢
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-11
    • 2019-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多