2017-02-06 13 views
6

Я переношу библиотеку .Net Framework в стандарт .Net, и компилятор не может найти основных разработчиков с System.Reflection.Emit.Где находятся MethodBuilder, ModuleBuilder и AssemblyBuilder в ядре dotnet?

Если я нахожусь в правильном месте, то документация API утверждает, что эти строители (MethodBuilder, ModuleBuilder и AssemblyBuilder) являются частью System.Reflection.Emit.

Это project.json для моей библиотеки:

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

Необходима ли дополнительная ссылка?

ответ

7

Вы можете найти их в пакете nugget "System.Reflection.Emit": "4.3.0" для рамки netstandard1.6.

+0

Работал для меня. Я не знаю, почему это было приостановлено ... –

0

Ответ «animalito maquina» также работал для меня, но я немного исследовал проблему, используя netstandard2.0. Возможно, это не относится к этому вопросу, но я хотел бы поделиться этим с вами, поскольку он все равно может помочь другим :).

Я создал два проекта (DotNet новые):

  • "classlib", который использует netstandard2.0 по умолчанию
  • ... и "Консоль", которая использует netcoreapp2.0

Я добавил ссылки на класс AssemblyBuilder в обоих проектах. AssemblyBuilder отсутствовал в проекте «classlib», который использует netstandard2.0, но доступен в «консольном» проекте - netcoreapp2.0.

"Проблема" обусловлена ​​тем, что .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.

Эти ссылки могут быть полезны: