首页 > 解决方案 > SingleFileGenerator / Run Custom Tool 不适用于新的 vs2017 项目类型

问题描述

我有一个 SingleFileGenerator 可以正常工作于旧式 Visual Studio C# 项目,但根本不适用于新式 VS2017 C# 项目。我已将新的 guid 添加到注册属性和 packagedef 中,但仍然没有乐趣。作为参考,此代码生成器作用于扩展名为 .3schema 的 xml 文件,这是我们自己发明的 xml 文件...

[Guid("0BC6C7FE-28F7-4A64-A8F8-714FFC0F8FB4")]
[PackageRegistration(UseManagedResourcesOnly = true)]
[InstalledProductRegistration("TrilogySchemaGenerator", "Trilogy C# Schema Generator", "5.9")]
[CodeGeneratorRegistration(typeof(TrilogySchemaGenerator), "Trilogy C# Schema Generator", "{9A19103F-16F7-4668-BE54-9A1E7A4F7556}", GeneratesDesignTimeSource = true)]
[CodeGeneratorRegistration(typeof(TrilogySchemaGenerator), "Trilogy C# Schema Generator", vsContextGuids.vsContextGuidVCSProject, GeneratesDesignTimeSource = true)]
[ProvideObject(typeof(TrilogySchemaGenerator))]
public class TrilogySchemaGenerator : BaseCodeGeneratorWithValidation // base class implements IVsSingleFileGenerator
{
     …
}

和 pkgdef:

[$RootKey$\Generators\{FAE04EC1-301F-11d3-BF4B-00C04F79EFBC}\.3schema]
@="TrilogySchemaGenerator"

[$RootKey$\Generators\{9A19103F-16F7-4668-BE54-9A1E7A4F7556}\.3schema]
@="TrilogySchemaGenerator"

我错过了什么步骤?是否需要额外注册?其他尝试的想法?

标签: visual-studio-2017visual-studio-extensionsvisual-studio-2019single-file-generator

解决方案


我找错地方来解决我的问题。我的 SingleFileGenerator 根本不是问题!但是,如果您正在构建 SingleFileGenerator,请查看此答案以获取有关如何正确注册它的详细信息:

如何在 Visual Studio 2017 中注册“自定义工具”以使其工作?

我使用这个出色的工具将我的旧项目转换为新的 VS2017。我强烈推荐:

https://www.nuget.org/packages/Project2015To2017.Migrate2017.Tool/

但是,这个工具不能很好地处理自定义构建步骤,我的代码生成就是其中之一。就我而言,当我手动编写自定义构建步骤时,我错过了对 XML 注释行的引用:

  <ItemGroup>
       <XmlResource Include="Schema\T1TY2019.3schema">
     --> <Generator>TrilogySchemaGenerator</Generator> <--
         <LastGenOutput>T1TY2019.cs</LastGenOutput>
       </XmlResource>
     </ItemGroup>

推荐阅读