我已经向我的 C++ Visual Studio 项目 (vcxproj) 添加了一个新的构建目标。
该目标在构建项目时运行自定义工具。该工具根据我指定的 ContentType 和 ItemType 处理解决方案上的特定文件。这适用于“构建”和“清理”等项目操作。
现在我想支持一个等同于“编译”的操作,即在解决方案资源管理器中右键单击一个文件,然后选择使用我的自定义工具处理这个特定文件(与“编译”运行“CL”的方式相同)“C/ C++ 代码”文件类型)。
我知道我可以添加一个 Visual Studio 宏来执行此操作。这对我来说不是一个好的解决方案,因为对于许多用户来说更难部署。更好的解决方案是自定义 vcxproj(或由它导入的文件)。
我想知道是否可以通过 msbuild 目标脚本或 PropertyPageSchema 在菜单中添加类似“编译”的操作(或更改“C/C++ 代码”以外的文件类型的“编译”行为)。
更新:我已经开始在 MSDN 论坛上进行讨论。从帮助清理一些事情的微软版主那里得到了一些答案,但问题仍然没有解决。
更新(2016 年),适用于 VS2015
AvailableItemName
似乎在 VS2015 上解决了这个问题。例如,我有一个自定义目标来处理 Excel 文件。
在目标文件上:
<ItemGroup>
<PropertyPageSchema Include="$(SolutionDir)\ExcelOptions.xml" />
</ItemGroup>
<ItemGroup>
<AvailableItemName Include="Excel">
<Targets>ProcessExcel</Targets>
</AvailableItemName>
</ItemGroup>
在选项文件上:
<FileExtension Name=".xls" ContentType="Excel"/>
<ContentType Name="Excel" DisplayName="Excel File" ItemType="Excel"/>
<ItemType Name="Excel" DisplayName="Excel File"/>
现在,在选择 excel 文件后,可以在解决方案资源管理器上下文菜单中访问编译,并且 CTRL-F7 也可以正常工作(对于可以在 VS 上编辑的文件,不适用于 excel 文件)