如何在VS2017 VSIX扩展生成的文件中添加并显示"Generated"标识?
在VS2017 VSIX扩展中标记生成文件为「Generated」
嘿,我之前做VS2017的VSIX扩展时刚好处理过类似需求!要让你生成的文件像T4、TypeScript那些一样被VS识别为「Generated」文件,其实有两种靠谱的方式,你可以根据自己的场景选:
方法一:通过项目文件元数据标记
这种方式是直接给项目里的文件添加MSBuild元数据,让VS从项目层面识别它是生成文件:
- 在你的VSIX代码中,当你把生成的文件添加到目标项目后,找到对应的
ProjectItem对象,设置它的Generated元数据为True:
// 假设你已经通过VS API获取到目标项目对象project,以及生成文件的路径pathToGeneratedFile ProjectItem generatedFile = project.ProjectItems.AddFromFile(pathToGeneratedFile); // 设置生成文件标记 generatedFile.SetMetadataValue("Generated", "True");
设置完成后,重新加载项目,VS就会把这个文件当成生成文件处理,和T4生成的文件表现一致。
方法二:在文件内容开头添加标准自动生成注释
如果你希望文件本身就能被VS识别(哪怕脱离项目单独打开),可以在生成文件的最顶部添加VS认可的自动生成注释块:
- 对于C#/VB这类代码文件,用这样的注释格式:
//------------------------------------------------------------------------------ // <auto-generated> // 此文件由你的VSIX扩展生成。 // 手动修改可能导致错误,且重新生成时修改会被覆盖。 // </auto-generated> //------------------------------------------------------------------------------
- 对于HTML、CSS、JSON这类文本文件,用对应语言的注释格式包裹:
<!-- <auto-generated> 此文件由你的VSIX扩展生成,请勿手动修改。 </auto-generated> -->
VS会自动识别这个注释块,把文件标记为生成文件,编辑时还会弹出类似“此文件是自动生成的,请勿修改”的提示。
小提示
- 如果你想达到最接近T4文件的效果,可以同时使用两种方式:既设置项目元数据,又添加文件头部注释
- 修改完后记得重新加载项目或者重启VS,确保VS能正确识别这些标记
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

