Пакет dotnet / msbuild доступен только для проектов в стиле SDK, но я считаю, что работает для всех версий Visual Studio, а также для командной строки..NET Core представила эти проекты в стиле SDK, которые можно определить по <Project Sdk="Microsoft.NET.Sdk">
.Если ваш проект (.csproj
, если это проект C #) не имеет свойства Sdk
или не импортирует Microsoft.NET.Sdk
ни одним из двумя другими способами , то это не проект в стиле SDK и нене поддерживает упаковку таким образом.Другое очевидное различие между двумя стилями проектов состоит в том, что SDK-проекты находятся всего в нескольких строках от нового шаблона проекта и не отображают файлы в проекте, тогда как проекты в старом стиле обычно имеют полноэкранный режим, даже из нового проекта.шаблон только с одним файлом класса, и он перечисляет отдельные файлы в проекте.Если вы хотите продолжить работу с этим типом проекта, вам нужно будет использовать nuget.exe pack
и, возможно, вы захотите создать файл .nuspec
для определения некоторых метаданных пакета.
Однако, используя SDKБудущее за проектами стиля, просто потребуется время для перехода всех существующих типов проектов Microsoft.Его гораздо проще использовать, поэтому лично я бы избегал проектов старого стиля, если вы не используете тип проекта (например, ASP.NET, а не ASP.NET Core), который его не поддерживает.
Все этосбивает с толку тех, кто плохо знаком с экосистемой .NET.Моя рекомендация: 1. при установке Visual Studio при выборе рабочей нагрузки убедитесь, что в списке компонентов выбран .NET Core, независимо от того, какая новейшая версия .NET Core доступна во время установки.При создании нового проекта в Visual Studio всегда выбирайте версию .NET Core или версию .NET Standard любого нового шаблона проекта, даже если вы хотите настроить таргетинг на (Windows) .NET Framework, и в этом случае вы редактируете .csproj
и измените <TargetFramework>netstandard2.0</TargetFramework>
на <TargetFramework>net45</TargetFramework>
, хотя я бы порекомендовал многоцелевой таргетинг, добавив имя элемента и используя список, разделенный точкой с запятой: <TargetFrameworks>net45;netstandard2.0</TargetFrameworks>
.Поэтому избегайте шаблона «Библиотека классов (.NET Framework)», вместо этого используйте «Библиотеку классов (.NET Standard)», а затем измените цель, если необходимо.