我已经基于模板 [1] 实现了单个文件生成器(编译为可安装的 VSIX 输出,包括组件的自动注册)并且:
- 它适用于 VS 2015 和 VS2017 中的经典 .NET 项目;
- 它适用于 VS2017 中的 .NET Core 项目;
- 但不适用于 VS2017 中的 .NET Standard 项目。
全部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
to the DotNetStandard.csproj
(手动),你得到了想要的结构——但生成器永远不会被激活。
有人成功为 .NET Standard 项目编写了 VSIX 单文件生成器吗?有关如何调试此问题的任何指示吗?
[1] https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/Single_File_Generator https://github.com/Microsoft/VSSDK-Extensibility-Samples/tree/master/Single_File_Generator