Как создать библиотеку базовых классов.net
Я новичок в.net core. Мне нужна помощь в настройке моего файла project.json для создания библиотеки классов с ядром.net. Я действительно прочитал много документов, но я потерян, потому что есть огромное количество вещей, чтобы прочитать. Я знаю, что должен использовать NETStandardLibray ( https://github.com/dotnet/corefx/blob/master/Documentation/architecture/net-platform-standard.md), но я не знаю, как это сделать мой файл config.json.
Вот мой файл config.json:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-3002702"
},
"xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-rc2-build10025"
},
"frameworks": {
"netcoreapp1.0": {
"imports": [
"dnxcore50",
"portable-net45+win8"
]
}
},
"testRunner": "xunit"
}
Я хочу создать простую библиотеку классов для повторного использования в других проектах, а также хочу, чтобы она имела модульные тесты.
Моя главная трудность здесь связана с прозвищами. Они такой беспорядок. Я просто хочу создать библиотеку классов, которую можно будет использовать на любой платформе, но, похоже, мне все равно придется выбирать платформу в моем проекте. В списке устаревших прозвищ я не знаю, какое прозвище мне следует использовать. Чтобы использовать стандартную библиотеку NET, следует ли мне ориентироваться на платформу.NET Standard Application 1.5, которая имеет идентификатор nuget netcoreapp1.0, или использовать платформу.NET Platform 5.0, которая имеет идентификатор nuget netstandard1.3??? Какая платформа правильная? Разве библиотека NETStandard не должна была быть независимой от платформы? И я должен поместить эти идентификаторы в зависимости или в разделе frameworks моего project.json? И какая разница между этими двумя разделами вообще? Я полностью потерян:(
1 ответ
Ваша библиотека классов должна иметь структуру netstandard1.3
или какую угодно версию - Noda Time нацеливается netstandard1.3
например, как я обнаружил, что слишком много отсутствует в netstandard1.0
, к несчастью. Я бы вообще выбрал самую низкую версию, в которой ты уверен. Ты не хочешь netcoreapp1.0
и т.д., когда вы пишете библиотеку, а не приложение.
Ваши модульные тесты должны быть в отдельном проекте, настроенном в соответствии с документацией xUnit - например, таргетинг netcoreapp1.0
и возможно net451
работать на настольном фреймворке тоже.
Чтобы ответить на ваши другие вопросы, в то время как.NET Standard Library не зависит от платформы (с точки зрения операционной системы), вам все равно нужно указать, от какой версии вы зависите - если вам нужно что-то, что только в netstandard1.5
, вы не можете целиться netstandard1.3
, например.
Часть о включении Microsoft.NETCore.App
и т.д. в разделе зависимостей (как я понимаю), чтобы избежать необходимости указывать каждую зависимость индивидуально по модульному принципу. Это простой способ начать, но позже вы можете захотеть быть более конкретным, обрезая свои зависимости только до тех, которые вам нужны.
Там определенно много еще в воздухе, много документации еще предстоит написать, и много устаревшей документации и сообщений в блогах за последние пару лет... но прогресс уже достигнут.