我正在使用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。 有没有人面对这个?有什么方法可以解决这个问题吗?
答案 0 :(得分:10)
我使用OverwriteReadOnlyFiles =&#34; true&#34;没有问题。尝试添加ToolsVersion =&#34; 4.0&#34;进入你的项目标签:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
答案 1 :(得分:6)
即使您说您已经检查了所有文件及其导入,但您最有可能处理ToolsVersion问题。从文件中省略ToolsVersion将导致它降至较低版本,因此,如果您所做的只是搜索“ToolsVersion”,那么您可能错过了未在&lt; Project&gt;上声明它的文件。节点。
使用诊断级别日志记录运行命令行构建,并使用以下附加参数:
> msbuild My.proj /fl /flp:v=diag;logfile=My.proj.diagnostic.log
构建失败后,打开日志文件,搜索“MSB4064”,然后回溯文件,查找指定2.0框架的任何内容。