2016-09-27 4 views
2

Я пытаюсь создать новый проект, полностью .NET Core, проект, который можно запускать в разных средах, но мне нужно добавить как ссылается на многие мои предыдущие проекты, которые работают в строгой .NET Framework (4.5).Возможно ли работать с .NET Core с .NET Framework

До сих пор, что я был в состоянии сделать, это добавить рамки .NET 461 проецировать JSON,

"frameworks": { 
    "netcoreapp1.0": { 
     "imports": [ 
     "dotnet5.6", 
     "portable-net45+win8" 
     ], 
     "dependencies": { 
     "Microsoft.NETCore.App": { 
      "version": "1.0.1", 
      "type": "platform" 
     }, 
     "Niloosoft.Hunter.ServicesDataAPI": { 
      "target": "project" 
     } 
     } 
    }, 
    "net461": { } 
    } 

Это удалось восстановить пакеты и мне даже удалось добавить рамочные .NET ссылки, но я похоже, не могут их правильно использовать, и я получаю эту ошибку. enter image description here

Итак, мой вопрос, есть это в настоящее время можно использовать мои .NET Framework ссылки без замены ожидаемой структуры (как я хочу, совместимости) со следующим:

> #if NET45 
//specific code for .NET 4.5 
    > # 

Что-то принять к сведению, мои проекты не поддерживаются .NETCoreApp, поэтому мне нужна .NET Framework. Я боюсь, мне просто нужно знать, возможно ли то, что я пытаюсь сделать.

+1

Поддерживает ли ваша библиотека PCL с Windows8/WindowsPhone8? – Tseng

ответ

5

Нет, вы не можете запускать библиотеки, предназначенные для .NET 4.5, только в .NET Core. Вы можете использовать только библиотеки, которые нацелены на netstandard1.x или netcoreapp1.x (а также старые библиотеки, которые нацелены на dnxcore5.0, dotnet5.x (который осуждался в пользу netstandard1.x и DNX быть оставленным в пользу Dotnet кли).

Однако вы может быть способный использовать PCL, которые нацелены на .NET 4.5 и Windows Phone 8.x или Windows 8.x, поскольку их поверхность API намного меньше и имеет только API, которые работают как на Windows 8.x/Windows Phone 8.x, так и на .NET 4.5+ (что означает: он использует System.Runtime, на котором основан .NET Core).

Если ваши библиотеки не являются PCL с .NET 4.5 + Win8 или выше, тогда вам придется искать библиотеки заметок и использовать директивы #if или указать только net451/net461 и работать с моно, без .NET Core.

+0

вы можете использовать любую библиотеку, а не только PCLt. Проблема в том, что вы не можете нацелить ядро ​​.net на эти библиотеки. и тогда вам нужно использовать директивы '#if 'для сборки только для .net 4.6.1 - и ваши функции не будут работать в сборке ядра .net. – gilmishal

+0

@gilmishal: Но нацеливание на .NET Core - именно то, что хочет OP, и если у него нет замены для соответствующей библиотеки, которая нацелена на .NET Core, он не сможет этого сделать. PCL (например, «portable-net45 + win8') имеет, по крайней мере, неплохую возможность запускать (или с очень небольшими изменениями) .NET Core, потому что у них очень похожая поверхность API, но« net45 »не могут работать в все. – Tseng