【发布时间】:2020-12-17 09:40:22
【问题描述】:
可能是一个简单的学习问题,但我正在尝试使用新的 roslyn 源代码生成器为 .net 框架 4.7.2 自动生成一些源代码(目标是 mvc,但如果它在我的测试控制台应用程序)。
这是我的代码
[Generator]
public class GenerateCommand : ISourceGenerator
{
public const string TestCode = @"
namespace Test
{
public static class Hello
{
public static string World = ""Hi from generated code."";
}
}";
public void Initialize(InitializationContext context) { }
public void Execute(SourceGeneratorContext context)
{
context.AddSource("Hint_Hello_World", SourceText.From(TestCode, Encoding.UTF8));
}
public void Test()
{
var x = Test.Hello.World; // <-- Refuses to build.
}
}
}
包版本是 Microsoft.CodeAnalysis.CSharp v 3.7.0(和相关的 roslyn 东西)
这似乎是我可以做到的最简单,如果我的目标是 .net 核心,它似乎可以工作,只是当我试图将它添加到框架项目时它什么都不做。没有错误,没有输出消息,只是没有运行或生成源代码。
任何帮助将不胜感激。
【问题讨论】:
-
.NET 5 是 .NET Core 5。出于营销目的,删除了
Core部分以避免“混淆客户”。尽管市场营销谈论统一,但实际上是弃用 .NET Old,将任何将要迁移到 .NET Core 的 API 移至 .NET Core 并将其重命名为 .NET 5 -
这意味着 .NET Old 生成器不应该在 .NET Old 项目中可用,因为它们使用的是旧版 SDK
-
所以基本上你是说 roslyn 的东西在我们升级到 .net 5 之前永远不会工作?
-
你认为有办法在 dll 中生成可以导入到 .net 旧应用程序中的代码吗?