gpt4 book ai didi

visual-studio-2017 - 单个文件生成器不适用于 Visual Studio 2017 中的 .NET 标准项目

转载 作者:行者123 更新时间:2023-12-02 07:59:00 24 4
gpt4 key购买 nike

我已经基于模板 [1] 实现了单个文件生成器(编译为可安装的 VSIX 输出,包括组件的自动注册)并且:

  • 它适用于 VS 2015 和 VS2017 中的经典 .NET 项目;
  • 它适用于 VS2017 中的 .NET Core 项目;
  • 但不适用于 VS2017 中的 .NET Standard 项目。

example

所有 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

最佳答案

您需要向您的类添加一个新的 CodeGeneratorRegistration。

“{9A19103F-16F7-4668-BE54-9A1E7A4F7556}”

就我而言,我的类声明看起来像

[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
{
}

源信息来自此线程

https://github.com/aspnet/Tooling/issues/394

关于visual-studio-2017 - 单个文件生成器不适用于 Visual Studio 2017 中的 .NET 标准项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44154869/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com