C++ 扩展Visual Studio(2010+;)项类型处理程序
在Visual Studio(2010及更高版本)中查看文件属性时,可以在“常规”部分中设置项类型。例如,对于C++,项目类型是“C/C++编译器”。 有一个“自定义构建工具”类型可用,但必须为属于该类别的每个文件完全配置它 我的问题是:C++ 扩展Visual Studio(2010+;)项类型处理程序,c++,visual-studio,custom-build,C++,Visual Studio,Custom Build,在Visual Studio(2010及更高版本)中查看文件属性时,可以在“常规”部分中设置项类型。例如,对于C++,项目类型是“C/C++编译器”。 有一个“自定义构建工具”类型可用,但必须为属于该类别的每个文件完全配置它 我的问题是: 是否有办法配置“自定义构建工具”并使其在项目类型列表中可用 然后是否可以将文件扩展名与此新项目类型生成器关联 我通过以下参考资料找到了答案: 在VS中集成编译器/汇编程序;将NASM与Visual Studio 2010结合使用 平台扩展性-第1部分由Pav
我通过以下参考资料找到了答案:
在VS中集成编译器/汇编程序;将NASM与Visual Studio 2010结合使用
- 平台扩展性-第1部分由Pavan Adharapurapu在MSDN博客上发表:
- 平台扩展性-第2部分由Pavan Adharapurapu在MSDN博客上发表:
- MSDN上的MSBuild API参考:
vcxproj
)中,包含一个新的构建定义(可能有一种方法可以在系统范围内包含它,但我还没有研究它):
$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml
,在本例中它引用了mybuild.xml)。创建mybuild.xml
mybuild.xml
中插入以下内容:
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ItemType Name="MYBUILD" DisplayName="My Custom Build" />
</ProjectSchemaDefinitions>
mybuild.xml
中添加一个条目来实现的,如下所示:
<FileExtension Name="*.myext" ContentType="MYBUILD" />
<ContentType Name="MYBUILD" DisplayName="My Custom Build" ItemType="MYBUILD" />
<?xml version="1.0" encoding="utf-8"?>
<ProjectSchemaDefinitions xmlns="http://schemas.microsoft.com/build/2009/properties"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:sys="clr-namespace:System;assembly=mscorlib">
<ItemType Name="MYBUILD" DisplayName="My Custom Build" />
<FileExtension Name="*.hh" ContentType="MYBUILD" />
<ContentType Name="MYBUILD" DisplayName="My Custom Build" ItemType="MYBUILD" />
</ProjectSchemaDefinitions>
<ItemGroup>
<PropertyPageSchema
Include="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml" />
<AvailableItemName Include="MYBUILD">
<Targets>_MYBUILD</Targets>
</AvailableItemName>
</ItemGroup>
我们刚才所做的:VisualStudio现在知道扩展名.myext
包含类型为MYBUILD
的数据。它还知道内容类型为MYBUILD
的文件是类型为MYBUILD
的项。在Visual Studio中重新打开项目后,添加扩展名为.myext
的文件时,Visual Studio将自动将这些文件的项类型设置为“我的自定义生成”
在自定义项MSVC上执行自定义工具的步骤
此时,我们有一个与自定义项类型关联的文件扩展名。我们需要将该项类型与一组生成规则相关联
mybuild.targets
中,在与PropertyPageSchema相同的项目组中添加以下内容:
<AvailableItemName Include="MYBUILD">
<Targets>_MYBUILD</Targets>
</AvailableItemName>
目标之后:
<Target Name="_MYBUILD">
<MYBUILD CommandLineTemplate="explorer $(IntDir)"></MYBUILD>
</Target>
<UsingTask TaskName="MYBUILD" TaskFactory="XamlTaskFactory" AssemblyName="Microsoft.Build.Tasks.v4.0">
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
</UsingTask>
.myext
文件时,我们现在可以期望VisualStudio弹出一个资源管理器窗口
自定义构建
有几种方法可以在属性窗口中添加配置字段,将它们映射到变量,并使用它们来配置任务。此处未介绍这一点,但在顶部提供的链接中进行了讨论。在VS 2008及以下版本中,右键单击项目时有一个“自定义生成规则”菜单项。我不知道它是否仍然存在于VS2010中,并且现在无法访问它进行测试。
<Target Name="_MYBUILD">
<MYBUILD CommandLineTemplate="explorer $(IntDir)"></MYBUILD>
</Target>
<UsingTask TaskName="MYBUILD" TaskFactory="XamlTaskFactory" AssemblyName="Microsoft.Build.Tasks.v4.0">
<Task>$(MSBuildThisFileDirectory)$(MSBuildThisFileName).xml</Task>
</UsingTask>
<Rule Name="MYBUILD" PageTemplate="tool" DisplayName="My Custom Build" Order="200"/>