У меня есть. NET Базовый проект, который я хочу упаковать в виде пакета NuGet для использования в других проектах / решениях Visual Studio. В. NET Базовых проектах есть замечательная функция, в которой вы можете выбрать в свойствах проекта для создания пакета NuGet при сборке, который я пробовал. В результате получается пакет, назовем его My.Company.Package
, в котором есть сгенерированный файл nuspe c, который выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>My.Company.Package</id>
<version>10.1.2</version>
<authors>My.Company.Package</authors>
<owners>My.Company.Package</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<dependencies>
<group targetFramework=".NETCoreApp3.1">
<dependency id="Microsoft.Win32.Registry" version="4.7.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
<files>
<file src="C:\dev\MyProduct\bin\Debug\netcoreapp3.1\My.Company.dll" target="lib\netcoreapp3.1\My.Company.dll" />
</files>
</package>
При установке встроенного пакета в другое решение менеджер пакетов NuGet сообщает следующее:
Installing:
Microsoft.NETCore.Platforms.3.1.0
Microsoft.Win32.Registry.4.7.0
My.Company.Package.10.1.2
System.Security.AccessControl.4.7.0
System.Security.Principal.Windows.4.7.0
После установки пакет, кажется, работает нормально, я могу получить доступ к пространствам имен и классам, которые должны быть включены в пакет.
По причинам, которые я выиграл '1023 * сюда, я должен упаковать пакет сам, без этой опции. Я установил событие пост-сборки в Visual Studio, которое запускает nuget pack mycompany.nuspec
, и mycompany.nuspe c выглядит так (я пытался имитировать сгенерированное):
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2012/06/nuspec.xsd">
<metadata>
<id>My.Company.Other.Package</id>
<version>10.1.214</version>
<authors>My Company</authors>
<description>
The real description.
</description>
<copyright>© My company</copyright>
<tags>My company</tags>
<dependencies>
<group targetFramework=".NETCoreApp3.1">
<dependency id="Microsoft.Win32.Registry" version="4.7.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
<files>
<file src="C:\dev\MyProduct\bin\Debug\netcoreapp3.1\My.Company.dll" target="lib\netcoreapp3.1\My.Company.dll" />
</files>
</package>
Пакет успешно построен Однако, когда я выбираю его установку во внешний проект, менеджер пакетов NuGet уведомляет меня, что он установит только этот указанный c пакет:
Installing:
My.Company.Package.10.1.2
После установки я не могу получить доступ к ожидаемому классы или пространства имен, похоже, он не включает в себя все, что нужно.
Как при первом варианте можно установить так много пакетов, которые никогда не перечислены в качестве зависимостей в файле nuspe c, и как я могу это сделать? подражать?