#.net #.net-core #asp.net-core-1.0
#.net #.net-core #asp.net-core-1.0
Вопрос:
У меня есть существующая библиотека с открытым исходным кодом, которую я написал в .NET 4.5, из которой я хочу создать NuGet. Проблема в том, что этот пакет NuGet будет доступен только для приложений .NET 4.5.
Что я хочу сделать, так это иметь поддержку как .NET 4.5, так и .NET Core в одном и том же NuGet (я уже видел пакеты, которые выполняют эту строку JSON.NET ) — как я могу добавить поддержку к существующему NuGet? И как мне поддерживать в одной библиотеке классов несколько .СЕТЕВЫЕ версии?
Комментарии:
1. Если у ваших пользователей нет большой необходимости, подождите. Это то, что я сделал для своих проектов с открытым исходным кодом. Текущий инструментарий слишком сложен, и вы, вероятно, не хотите тратить свое время. Корпорация Майкрософт недавно дала несколько обещаний, blogs.msdn.microsoft.com/dotnet/2016/09/26 /…
2. @LexLi спасибо. можете ли вы уточнить, какие доступные инструменты доступны в настоящее время?
3. dot.net есть все, что вам нужно.
Ответ №1:
Вы можете продолжать использовать csproj для целевой программы net45 и добавить project.json, предназначенный как для фреймворков «net45», так и для «netstandard1.x» (используйте project.json из моей библиотеки в качестве примера):
"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 pack» не использует информацию из файла nuspec, и все метаданные должны присутствовать в project.json.