Ошибка NU1212
указывает на dotnet tool install
, похоже, она не вызвана непосредственно вашим пакетом. Вы уверены, что правильно добавляете свой пакет через диспетчер пакетов NuGet или консоль ? Он не воспроизводится в библиотеке. NET Core 3.1 или типе проекта NUnit.
Как предлагает @Perry Qian-MSFT, вы всегда должны убедиться, что старый пакет NuGet полностью удален, прежде чем добавлять новый один, особенно если вы не меняли версию пакета в NuSpe c. Вместо этого используется старый кэшированный пакет. Чтобы очистить все кеши пакетов NuGet, используйте одну из следующих команд.
- В
dotnet.exe
используйте locals --clear all
- В
nuget.exe
используйте locals -clear all
- В Visual Studio> = 2017 go до Инструменты > Диспетчер пакетов NuGet > Параметры диспетчера пакетов и нажмите Очистить все Кэш NuGet
Вопрос в том, как создать пакет NuGet, совместимый с библиотекой Do tNet Core 3.1?
NuGet 4.0+ с PackageReference
использует contentFiles
, см. Эту ссылку .
Файлы содержимого включаются в пакет с помощью элемента, указывающего папку содержимого в целевом атрибуте. Однако такие файлы игнорируются , когда пакет устанавливается в проекте с использованием PackageReference , который вместо этого использует элемент.
Вы можете продолжать копировать файлы в каталог content
для совместимости, но вы также должны скопировать их в каталог contentFiles
. Вы должны убедиться, что они находятся в contentFiles\any\any\
, иначе они не будут извлечены в проекты с какой-либо целевой структурой.
<file src="JsonSchemas\*.*" target="contentFiles\any\any\JsonSchemas" />
Путь внутри пакета указан ниже, поэтому первый сегмент пути представляет язык кода, второе - прозвище целевой платформы. Вы должны использовать any
в случаях boh.
/contentFiles/{codeLanguage}/{TxM}
Ниже представлен ваш пример NuSpe c, адаптированный к contentFiles
, который также будет работать в. NET Core 3.1.
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>Package.JsonSchemas</id>
<version>0.0.1</version>
<authors>me</authors>
<owners>me</owners>
<releaseNotes>Fill in later</releaseNotes>
<description>Set of JSON schemas.</description>
<tags>json, json-schema, tdv</tags>
<contentFiles>
<files include="any\any\JsonSchemas\*.json" buildAction="Content" copyToOutput="true" flatten="false" />
</contentFiles>
</metadata>
<files>
<file src="JsonSchemas\*.*" target="content\JsonSchemas" />
<file src="JsonSchemas\*.*" target="contentFiles\any\any\JsonSchemas" />
</files>
</package>
Из того же источника , который вы связали, рекомендуется не указывать тип зависимости явно для обратной совместимости, поэтому я оставил его.
Типы пакетов: установлен в файле .nuspe c. Лучше всего для обратной совместимости с не устанавливать явно тип зависимости и вместо этого полагаться на NuGet, предполагающий этот тип, когда тип не указан.