2017-02-06 22 views
6

Mam migrację biblioteki .Net Framework do standardu .Net i kompilator nie może znaleźć konstruktorów rdzeni z System.Reflection.Emit.Gdzie są MethodBuilder, ModuleBuilder i AssemblyBuilder w rdzeniu dotnet?

Jeśli jestem we właściwym miejscu, a następnie dokumentacja API twierdzi, że te wypełniacze (MethodBuilder, ModuleBuilderAssemblyBuilder) i są częścią System.Reflection.Emit.

To project.json dla mojej bibliotece:

{ 
    "version": "1.0.0-*", 
    "buildOptions": { 
    "debugType": "portable" 
    }, 
    "dependencies": {}, 
    "frameworks": { 
    "netstandard1.6": { 
     "dependencies": { 
     "NETStandard.Library": "1.6.0" 
     } 
    } 
    } 
} 

Czy potrzebuję dodatkowego odniesienia?

Odpowiedz

7

Można je znaleźć w pakiecie nugget "System.Reflection.Emit": "4.3.0" dla platformy netstandard1.6.

+0

Pracowałem dla mnie. Nie wiem, dlaczego to zostało odrzucone ... –

0

Odpowiedź "animalito maquina" zadziałała również dla mnie, ale zbadałem problem trochę, używając netstandard2.0. Może to nie mieć znaczenia dla tego pytania, ale chciałem się z wami tym podzielić, ponieważ nadal może pomóc innym :).

I generowane dwa projekty (DotNet Nowe):

  • "classlib", który wykorzystuje netstandard2.0 na domyślnie
  • ... i "Konsola", który używa netcoreapp2.0

Dodałem odwołania do klasy AssemblyBuilder w obu projektach. Brakowało AssemblyBuilder w projekcie "classlib", który korzystał z netstandard2.0, ale był dostępny w projekcie "konsola" - netcoreapp2.0.

"Problem" jest spowodowane faktem, że .NET Core Libraries are actually always a superset of the APIs defined in the corresponding version of the .NET Standard. There are always types and members available in the .NET Core Libraries, which are not (yet?) part of the .NET Standard.

Te linki mogą być pomocne: