2016-10-06 4 views
1

У меня есть существующая библиотека с открытым исходным кодом, которую я написал в .NET 4.5, из которой я хочу создать NuGet. Проблема в том, что этот пакет NuGet будет доступен только для приложений .NET 4.5.Добавить поддержку .NET Core для существующей библиотеки классов

Что я хочу сделать, так это поддержка как .NET 4.5, так и .NET Core на том же NuGet (я уже видел пакеты, которые делают эту строку JSON.NET) - как я могу добавить поддержку существующего NuGet? И как я могу поддерживать в одной библиотеке классов несколько версий .NET?

+0

Если у вас нет настоятельной потребности, подождите. Это то, что я сделал для своих проектов с открытым исходным кодом. Нынешний инструмент - это слишком большая боль, и вы, вероятно, не хотите тратить свое время. Несколько обещаний были сделаны недавно Microsoft, https://blogs.msdn.microsoft.com/dotnet/2016/09/26/introducing-net-standard/ –

+0

@LexLi благодарит. можете ли вы уточнить, какие текущие инструменты доступны? – developer82

+0

http://dot.net есть все, что вам нужно. –

ответ

1

Вы можете продолжать использовать csproj для цели net45 и добавить project.json, что цели как «net45» и «netstandard1.x» рамки (используйте project.json of my library в качестве образца):

"frameworks": { 
    "net45": { 
     "frameworkAssemblies": { 
     "System.Data": "", 
     "System.ComponentModel.DataAnnotations" : "" 
     }, 
     "buildOptions": { 
     "define": [] 
     } 
    }, 
    "netstandard1.5": { 
     "dependencies": { 
     "NETStandard.Library": "1.6.0", 
     "System.Data.Common": "4.1.0", 
     "System.Reflection": "4.1.0", 
     "System.Reflection.Primitives": "4.0.1", 
     "System.Threading": "4.0.11", 
     "System.Threading.Tasks": "4.0.11", 
     "System.ComponentModel.Annotations": "4.1.0" 
     }, 
     "buildOptions": { 
     "define": [ "NET_STANDARD" ] 
     } 
    } 

Обратите внимание, что вы можете определить условные константы компиляции для net45 или netcore конкретных фрагментов кода.

Если у вас есть project.json, вы можете подготовить NuGet пакет, который включает в себя как net45 и netstandard строит с помощью следующей команды:

> dotnet pack --configuration Release 

Не забывайте, что «DotNet пакет» не использует информацию из файл nuspec и все метаданные должны присутствовать в project.json.