我有一个适用于老式Visual Studio C#项目的SingleFileGenerator,但完全不适用于新风格的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"
我遗漏了哪一步?是否需要额外注册?还有其他的想法可以尝试吗?
发布于 2019-08-04 16:34:22
我找错了地方来解决我的问题。这根本不是我的SingleFileGenerator的问题!但如果您正在构建SingleFileGenerator,请查看此答案以了解如何正确注册它的详细信息:
How to register "custom tool" with Visual Studio 2017 to make it work?
我使用这个优秀的工具将我的旧项目转换为新的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>
https://stackoverflow.com/questions/57324230
复制相似问题