Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

2.3K
Views
Generador de código fuente de C#: advertencia CS8032: no se puede crear una instancia de analizador

Estoy tratando de construir un generador de fuentes. En este momento, solo el método estático más básico que devuelve "Hello World".

El proyecto del generador se compila, pero el código generado no está disponible, el depurador nunca se inicia y el resultado de la compilación muestra

CSC: advertencia CS8032: no se puede crear una instancia del analizador Generator.StaticPropertyEnum.helloWorld desde ...\bin\Debug\net5.0\Generator.StaticPropertyEnum.dll: no se pudo cargar el archivo o ensamblado 'System.Runtime, Version=5.0 .0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' o una de sus dependencias. El sistema no puede encontrar el archivo especificado..

Ejemplos a los que hago referencia

  • Proyecto de muestra del generador de equipo de Roslyn
  • Libro de cocina de Roslyn Team Generator
  • Proyecto Generator.Equals
  • Cómo depurar generadores de código fuente de C# 9

He intentado

  • cambiar TargetFramework y LanguageVersion tanto del generador como de los proyectos de prueba
  • haciendo referencia a muchas versiones de las bibliotecas de analizadores Microsoft.CodeAnalysis.CSharp y Microsoft.CodeAnalysis.Analyzers
  • haciendo referencia a una versión explícita de Microsoft.Net.Compilers.Toolset
  • Agregar una referencia explícita a la biblioteca NetStandard
  • comenzando desde cero con una plantilla de proyecto de analizador
  • buscando una plantilla de proyecto de generador (pero no encontré ninguna)

Versiones

Visual Studio: versión 16.8.3
SDK de .NET: 5.0.101

Código

Generador.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>

Probar 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>

Generador

 [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 } }
over 4 years ago · Santiago Trujillo
3 answers
Answer question

0

Los generadores de código fuente deben ser .NET Standard 2.0 para ejecutarse en Visual Studio 2019+ o .NET Standard 1.x para ejecutarse en Visual Studio 2017+.

over 4 years ago · Santiago Trujillo Report

0

como @Yair-Halberstadt mencionó en una respuesta diferente, el error específico enumerado se debe al hecho de que actualmente los proyectos de generación de fuentes deben apuntar a netstandard2.0. Sin embargo, si obtiene el error CS8032 con un ensamblado diferente (por ejemplo Microsoft.CodeAnalysis, Version=3.0.x ... ), su problema probablemente se deba a una discrepancia en la versión del SDK. Por ejemplo, en mi computadora tengo SDK 5.0.302 que tiene la versión 3.10.0 de Microsoft.CodeAnalysis y Microsoft.CodeAnalysis.CSharp . Si bien el proyecto Generator usa nuget para obtener estos paquetes, la compilación del proyecto que hace referencia al generador resuelve estos archivos desde el SDK. Es por eso que volver a 3.8.0 ha funcionado para algunos comentaristas, la versión SDK que han instalado contiene 3.8.0 de estas referencias.

over 4 years ago · Santiago Trujillo Report

0

Tengo un generador de fuentes que apunta a netstandard2.0 y net5.0 para soporte de nulabilidad.

 <TargetFrameworks>net5.0;netstandard2.0</TargetFrameworks> <Nullable>enable</Nullable>

y una biblioteca de muestra que apunta a los mismos marcos.

Se bloquea cuando el proyecto se está compilando en Visual Studio, pero se compila correctamente desde la terminal.

Para resolver esto, cambié el marco de destino al hacer referencia a él como un generador con SetTagetFramework y ahora se compila sin advertencias ni errores.

 <ItemGroup> <ProjectReference Include="..\MyGenerator\MyGenerator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" SetTargetFramework="TargetFramework=netstandard2.0" /> </ItemGroup>
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!