我已经基于模板[1](编译成可安装的VSIX输出,包括组件的自动注册)实现了单个文件生成器,并且:
所有HasCustomTool.xml
个文件都具有相同的配置,所有这些文件都有自定义工具'属性指定。
当我查看.csproj
文件时,我发现它们是不同的。 DotNetCore.csproj
文件的(工作)内容为:
<ItemGroup>
<Compile Update="HasCustomTool.cs">
<DependentUpon>HasCustomTool.xml</DependentUpon>
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
</Compile>
</ItemGroup>
<ItemGroup>
<None Update="HasCustomTool.xml">
<LastGenOutput>HasCustomTool.cs</LastGenOutput>
<Generator>PtResxErrorTool</Generator>
</None>
</ItemGroup>
DotNetStandard.csproj
文件包含:
<ItemGroup>
<None Update="HasCustomTool.xml">
<LastGenOutput>HasCustomTool.cs</LastGenOutput>
<Generator>PtResxErrorTool</Generator>
</None>
</ItemGroup>
当您将标记从DotNetCore.csproj
复制到DotNetStandard.csproj
(手动)时,您将获得所需的结构 - 但永远不会激活生成器。
是否有人为.NET Standard项目成功编写了VSIX单文件生成器?有关如何调试此问题的任何指示?
[1] https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/Single_File_Generator
答案 0 :(得分:4)
您需要向您的班级添加新的CodeGeneratorRegistration。
&#34; {9A19103F-16F7-4668-BE54-9A1E7A4F7556}&#34;
在我的情况下,我的类decl看起来像
[ComVisible(true)]
[Guid(GuidList.GuidI18NReactivetring)]
[ProvideObject(typeof(I18NReactive))]
[CodeGeneratorRegistration(typeof(I18NReactive), "I18N.Reactive", vsContextGuids.vsContextGuidVCSProject, GeneratesDesignTimeSource = true)]
[CodeGeneratorRegistration(typeof(I18NReactive), "I18N.Reactive", "{9A19103F-16F7-4668-BE54-9A1E7A4F7556}", GeneratesDesignTimeSource = true)]
public class I18NReactive : IVsSingleFileGenerator, IObjectWithSite
{
}
源信息来自此帖子