C # Source Generator - Warnung CS8032: Eine Instanz des Analysators kann nicht erstellt werden

farlee2121

Ich versuche einen Quellgenerator zu erstellen. Im Moment nur die grundlegendste statische Methode, die "Hello World" zurückgibt.

Das Generatorprojekt wird erstellt, aber der generierte Code ist nicht verfügbar, der Debugger wird nie gestartet und die Build-Ausgabe wird angezeigt

CSC: Warnung CS8032: Eine Instanz von Analyzer Generator.StaticPropertyEnum.helloWorld kann nicht aus ... \ bin \ Debug \ net5.0 \ Generator.StaticPropertyEnum.dll erstellt werden: Datei oder Assembly 'System.Runtime, Version = 5.0 konnte nicht geladen werden .0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine seiner Abhängigkeiten. Die angegebene Datei wurde vom System nicht gefunden..

Beispiele, auf die ich mich beziehe

ich habe es versucht

  • Ändern von TargetFramework und LanguageVersion sowohl des Generators als auch des Testprojekts
  • Verweisen auf viele Versionen der Analysatorbibliotheken Microsoft.CodeAnalysis.CSharpundMicrosoft.CodeAnalysis.Analyzers
  • Verweis auf eine explizite Version von Microsoft.Net.Compilers.Toolset
  • Hinzufügen eines expliziten Verweises auf die NetStandard-Bibliothek
  • von vorne anfangen mit einer Analyzer-Projektvorlage
  • Suche nach einer Generator-Projektvorlage (habe aber keine gefunden)

Versionen

Visual Studio: Version 16.8.3
.NET SDK: 5.0.101

Code

Generator.csproj

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.9.0-2.final" PrivateAssets="all" />
    <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.0.0" PrivateAssets="all" />
  </ItemGroup>
 
</Project>

Testen Sie csproj

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>net5.0</TargetFramework>

    <IsPackable>false</IsPackable>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.NET.Test.Sdk" Version="16.7.1" />
    <PackageReference Include="xunit" Version="2.4.1" />
    <PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
    <PackageReference Include="coverlet.collector" Version="1.3.0">
      <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
      <PrivateAssets>all</PrivateAssets>
    </PackageReference>
  </ItemGroup>

  <ItemGroup>
    <ProjectReference Include="..\Generator.StaticPropertyEnum\Generator.StaticPropertyEnum.csproj"  OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
  </ItemGroup>

</Project>

Generator

    [Generator]
    public class helloWorld : ISourceGenerator
    {
        public void Execute(GeneratorExecutionContext context)
        {


            context.AddSource("HelloWorld-generated.cs", @"
            using System;
            namespace HelloWorld
            {
                public static class Hello
                {
                    public static string SayHello() {
                        return ""HelloWorld"";
                    }
                }
            }");
        }

        public void Initialize(GeneratorInitializationContext context)
        {
#if DEBUG
            if(!Debugger.IsAttached) Debugger.Launch();
#endif
        }
    }
Yair Halberstadt

Quellgeneratoren müssen .NET Standard 2.0 sein, um in Visual Studio ausgeführt zu werden.

Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.

Bei Verstößen wenden Sie sich bitte [email protected] Löschen.

bearbeiten am
0

Lass mich ein paar Worte sagen

0Kommentare
LoginNach der Teilnahme an der Überprüfung

Verwandte Artikel

Warnung CS8032 Eine Instanz des Analysers Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator kann nicht erstellt werden

FxCopAnalyzers: Eine Instanz des Analysators kann nicht erstellt werden

Eine Instanz des Analysators Microsoft.AspNetCore.Mvc.Analyzers.AvoidHtmlPartialAnalyzer kann nicht aus C: \ erstellt werden

Eine Spot-Instanz-VM kann in Azure nicht erstellt werden

Eine abgeleitete Instanz von Num kann nicht erstellt werden

Eine Instanz einer Schnittstelle kann nicht erstellt werden. IPagedList

Instanz des Viewmodel-Hilfs kann nicht erstellt werden

C #: "Instanz der statischen Klasse kann nicht erstellt werden"

Warnung: In SceneView (erstellt von Pager) kann keine Aktualisierung des Reaktionsstatus für eine nicht gemountete Komponente durchgeführt werden.

JsonMappingException: Instanz von kann nicht erstellt werden

Instanz von - Jackson kann nicht erstellt werden

Gcloud-Instanz kann nicht erstellt werden

Instanz von AndroidViewModel kann nicht erstellt werden

Android - Fehler "Instanz von kann nicht erstellt werden (obwohl mindestens eine Erstellung vorhanden ist)" mit Retrofit

Eine abgeleitete Instanz von MonadTrans für newtype kann nicht erstellt werden

Eine Instanz der Klasse com.example.architectureexample.NoteViewModel kann nicht erstellt werden

Automapper: Instanz des abstrakten Typs für Sammlungen kann nicht erstellt werden

Spring Boot JSON-Parsing-Fehler: Instanz des Modells kann nicht erstellt werden

InvalidOperationException: Eine Instanz des Typs "Microsoft.AspNetCore.Identity.UserManager" konnte nicht erstellt werden

Wie kann eine Instanz von QNetworkAccessManager erstellt werden?

Instanz einer abstrakten Klasse kann nicht erstellt werden (zufällig)

Instanz von MainViewModel kann nicht mit Hilt erstellt werden

JSON-Analysefehler: Instanz der Klasse kann nicht erstellt werden

Instanz der ViewModel-Klasse kann nicht erstellt werden

Instanz von ViewModel in Android kann nicht erstellt werden

Vue Router-Instanz kann nicht in JavaScript erstellt werden

Instanz kann nicht erstellt werden - Konstruktor hat privaten Zugriff

RestTemplate () -Instanz kann nicht aus spring-web erstellt werden

Instanz von JwtClaimsBuilder in Quarkus-Anwendung kann nicht erstellt werden