【问题标题】:How I create MSBuild compile target我如何创建 MSBuild 编译目标
【发布时间】:2019-04-15 12:29:32
【问题描述】:

我想定义自己的编译目标,类似于 ClCompile 或 ResourceCompile 目标。

我是怎么做到的? 我尝试了以下操作,但该文件的 VisualStudio 上下文菜单中没有出现“编译”按钮。

  <Target Name="MyCompile">
    <Exec Command="test"/>
  </Target>
  <ItemGroup>
    <MyCompile Include="testfile"/>
  </ItemGroup>

【问题讨论】:

  • 您好,减少了对这个问题的一些误解的内容。如果您对解决方法有任何更新,请随时在此处分享。

标签: visual-studio msbuild


【解决方案1】:

正确的行为。您不能仅通过定义自己的自定义 ItemGroups 来将自定义 UI 扩展(右键单击菜单和构建支持)添加到 Visual Studio UI。如果您希望 Visual Studio 的帮助来编译标准代码文件(即 *.cs、*.cpp 等...),那么您必须使用 CLCompile。

【讨论】:

    【解决方案2】:

    但“编译”按钮未出现在 VisualStudio 上下文菜单中。我想定义自己的编译目标,类似于 ClCompile 或 ResourceCompile 目标。

    将为那些包含在 VS 定义的项目中的文件(如 ClCompile 或 ResourceCompile)启用编译按钮(用于 C++ 项目)。

    获取自定义目标(不确定,但我认为它比单个目标更复杂)作为 ClCompile 工作。这可能是一件相当复杂的事情。对于一个 C++ 项目,我认为编译选项不仅仅是一个编译目标或一个项目。

    我评论了一些 xxx.targets 和 xxx.props,发现甚至有些文件包含在 ClCompile Itemgroup 中,编译会被禁用,所以我认为编译菜单会检查 msbuild 结构中的其他内容。

    更新:

    VS 如何知道它可以为 a.cpp 显示“编译”菜单项?

    编译选项如下所示:

    经过我的检查,我发现它与 Microsoft.Cpp.DesignTime.targetscontains targets that are only used by IDE and not the real build 有关,并且可以在 $(VCTargets) 路径中找到。但我不确定这一点。为此,我认为是否启用了编译菜单,vs 不仅会检查 ItemGroup,还会检查 xxx.targets 中预先定义的内容。

    对于您的情况,在我们聊天之后,C++ 项目中的compile 菜单并不是您真正想要的,因为它仅适用于 .vcxproj。愿Code Generation能满足您的需求。

    【讨论】:

    • 我的意思是右键单击文件,而不是项目。 VS 如何知道它可以为 a.cpp 显示“编译”菜单项?
    • @NN_ 一个有意义但复杂的问题。现在我想我明白你想知道什么了。我将在更新中分享我的想法,希望对您有所帮助。
    • 谢谢。在 vcxproj 中有 CustomBuildTool 目标,您可以将其用于文件,但我想要一个通用的解决方案。
    • @NN_ 是的,您可以使用 .vcxproj 文件中的目标来自定义构建过程。但这是两件不同的事情,比如当您像上面提到的 johnson 一样右键单击文件时有一个 MyCompile 按钮。为了实现你的目标,我认为你需要一个扩展来向解决方案资源管理器添加一个 MyCompile 选项,然后在它的执行 mothed 或点击事件之类的东西中有一些代码来启动你的自定义编译器,但我认为它非常复杂。希望对您有所帮助。
    • 我正在寻找不涉及 VS 扩展的解决方案。完全可以使用 MSBuild 完成的事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 2011-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-03
    相关资源
    最近更新 更多