Вопрос:
Как управлять пакетами nuget в решении VisualStudio2017
с 3 платформами:
- .Net Стандарт 1.3
- .NET Framework 4.6
- .Net Core 1.0
?
Мне нравится подход PackageReference
, но я не знаю, как его использовать. Они говорят о:
<ItemGroup>
<!-- ... -->
<PackageReference Include="Contoso.Utility.UsefulStuff" Version="3.6.0" />
<!-- ... -->
</ItemGroup>
- Означает ли это, что в целом мне нужно как минимум 3 PackageReferences для каждого из Framework/Standard/Core?
- Как управлять версиями, когда мы застряли на
.Net Framework 4.6
? - Я также столкнулся с проблемой, когда не мог запустить консольное
.net core
приложение, ссылающееся на.net standard
библиотеку, из-за проблемы совместимости версий nuget.
Кроме того, я хотел бы упомянуть, что я наткнулся на пару статей, в которых говорилось, что .csproj
вернулись и .xproj
, project.json
не нужны. Лично мне нравится эта идея, чтобы иметь дело с .csproj
s, как раньше.
Контекст:
Я не являюсь носителем английского языка, и я новичок в нетривиальном использовании nuget и разработке .Net
Core
/Standard
.
Я готовлюсь перенести приложение .Net Framework
на .Net
Framework
+Standard
+Core
. Теперь это просто приложение WPF. Но в будущем предполагается, что оно останется тем же приложением WPF, но также будет иметь новую ветвь .Net Core
, основанную на существующей логике. Я точно не знаю, какие планы на возможную новую ветку .Net Core
. Скорее всего, в планах создание сайта ASP.Net Core
. Что я знаю точно, так это то, что задача состоит в том, чтобы поддерживать работу логики как .Net Framework
(с пользовательским интерфейсом WPF), а также реализовывать ее как .Net Core
.
Я решил использовать комбинацию Framework
+Standard
+Core
в качестве решения из-за ее простоты. Я имею в виду, что концепция проста для понимания: базовые классы (стандартные), используемые двумя подразделениями (FWK, Core). Нет необходимости в мутитаргетинге или директивах в коде (условная компиляция). Подразумевается, что новое решение должно быть создано с нуля путем копирования и изменения. До сих пор не уверен на 100% в разумности этого решения.
Но вопрос подразумевает, что именно этот подход должен быть выбран: Framework
+Standard
+Core
.
Я надеюсь, что этот вопрос разумен; я имею в виду, что эффективное управление пакетами nuget в таком случае является хорошим началом для успешного кроссплатформенного проекта. Спасибо!
net46
иnetstandard20
. Нет смысла нацеливаться наnetstandard13
, так как API там очень ограничен, и вам не нужно поддерживать устаревшие платформы, такие как WP или Silverlight. Проведите свои эксперименты сPackageReference
, и вам даже не нужно будет задавать первые вопросы. В чем именно заключается проблема. Я также столкнулся с проблемой, когда не смог запустить консольное приложение .net core, ссылающееся на стандартную библиотеку .net, из-за проблемы совместимости версий nuget? - person Lex Li   schedule 20.07.2018