我如何创建MSBuild编译目标

时间:2019-04-15 12:29:32

标签: visual-studio msbuild

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

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

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

2 个答案:

答案 0 :(得分:0)

正确的行为。您不能仅通过定义自己的自定义ItemGroup将自定义UI扩展(右键单击菜单并建立支持)添加到Visual Studio UI中。如果要Visual Studio的帮助来编译标准代码文件(例如* .cs,*。cpp等),则必须使用CLCompile。

答案 1 :(得分:0)

  

但是Visual Studio上下文菜单中没有出现“编译”按钮。我想定义自己的类似于ClCompile或ResourceCompile目标的编译目标。

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

要获取一个自定义目标(不确定,但我认为它比单个目标要复杂得多)用作ClCompile。这可能是一件非常复杂的事情。对于C ++项目,我认为compile选项不仅与编译目标或Item有关。

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

更新

  

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

编译选项如下:

enter image description here

检查后,我发现它与Microsoft.Cpp.DesignTime.targets的{​​{1}}有关,可以在$(VCTargets)路径中找到。但是我不确定这一点。为此,我认为是否启用了编译菜单,vs不仅会检查ItemGroup,还会检查在xxx.targets中预定义的内容。

根据您的情况,在我们聊天之后,C ++项目中的contains targets that are only used by IDE and not the real build菜单并不是您真正想要的,因为它仅适用于.vcxproj。愿Code Generation可以满足您的需求。