【问题标题】:Does xbuild really not implement the Move task?xbuild 真的没有实现 Move 任务吗?
【发布时间】:2015-09-10 09:30:12
【问题描述】:

是我遗漏了什么,还是 xbuild 真的没有实现 <Move> 任务?我正在尝试使用 MSBuild 文件为所有内容构建跨平台 C# 项目,因此我们的项目中 Windows 和 Linux 之间的差异会更小,我的 MSBuild 文件看起来有点像这样:

<Copy SourceFiles="$(SrcDir)/$(FirstFile);$(SrcDir)/$(SecondFile)" DestinationFolder="$(DestDir)" />
<Move SourceFiles="$(DestDir)/$(SecondFile)" DestinationFile="$(DestDir)/$(NewFileNameForSecondFile)" />

但是当我运行 xbuild 时,它会抱怨:

Error initializing task Move: Not registered task Move.

我错过了什么?我知道 xbuild 没有实现一些 MSBuild 更新和/或更高级的功能——我不得不解决其中的一些遗漏——但&lt;Move&gt; 任务似乎是一个非常非常基本的任务。它真的没有在 xbuild 中实现,还是我遗漏了一些明显的东西?

【问题讨论】:

    标签: mono xbuild


    【解决方案1】:

    认为 Move 属于MSBuild 中的TaskExtensions。您需要将其转换为 CopyDelete 或多个平台特定的任务:

    xbuild (mono 4.2.x) 中的任务名称列表:

    cd mono/mcs/tools/xbuild
    grep -RI "TaskName=" * | cut -d "=" -f 2 | cut -d "      " -f 1 | sort | uniq
    "Microsoft.Build.Tasks.AL"
    "Microsoft.Build.Tasks.AssignCulture"
    "Microsoft.Build.Tasks.AssignLinkMetadata"
    "Microsoft.Build.Tasks.AssignProjectConfiguration"
    "Microsoft.Build.Tasks.AssignTargetPath"
    "Microsoft.Build.Tasks.CallTarget"
    "Microsoft.Build.Tasks.CombinePath"
    "Microsoft.Build.Tasks.Copy"
    "Microsoft.Build.Tasks.CreateCSharpManifestResourceName"
    "Microsoft.Build.Tasks.CreateItem"
    "Microsoft.Build.Tasks.CreateProperty"
    "Microsoft.Build.Tasks.CreateVisualBasicManifestResourceName"
    "Microsoft.Build.Tasks.Csc"
    "Microsoft.Build.Tasks.Delete"
    "Microsoft.Build.Tasks.Error"
    "Microsoft.Build.Tasks.Exec"
    "Microsoft.Build.Tasks.FindAppConfigFile"
    "Microsoft.Build.Tasks.FindUnderPath"
    "Microsoft.Build.Tasks.GenerateResource"
    "Microsoft.Build.Tasks.GetAssemblyIdentity"
    "Microsoft.Build.Tasks.GetFrameworkPath"
    "Microsoft.Build.Tasks.GetFrameworkSdkPath"
    "Microsoft.Build.Tasks.GetReferenceAssemblyPaths"
    "Microsoft.Build.Tasks.LC"
    "Microsoft.Build.Tasks.MSBuild"
    "Microsoft.Build.Tasks.MakeDir"
    "Microsoft.Build.Tasks.Message"
    "Microsoft.Build.Tasks.ReadLinesFromFile"
    "Microsoft.Build.Tasks.RemoveDir"
    "Microsoft.Build.Tasks.RemoveDuplicates"
    "Microsoft.Build.Tasks.ResolveAssemblyReference"
    "Microsoft.Build.Tasks.SignFile"
    "Microsoft.Build.Tasks.Touch"
    "Microsoft.Build.Tasks.Vbc"
    "Microsoft.Build.Tasks.Warning"
    "Microsoft.Build.Tasks.WriteCodeFragment"
    "Microsoft.Build.Tasks.WriteLinesToFile"
    

    【讨论】:

    • 看起来你对 TaskExtensions 的看法是正确的:msdn.microsoft.com/en-us/library/ff595163.aspx 说 Move 任务“继承了 TaskExtension 类的参数......”。就像您建议的那样,我能够通过复制和删除获得相同的效果,但很高兴知道我没有遗漏一些明显的东西。感谢您提供详细而详细的答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2014-06-18
    • 2012-06-24
    • 2011-06-01
    相关资源
    最近更新 更多