Включить ссылочный проект в пакет nuget

У меня есть решение с тремя проектами (с использованием netstandard1.4). Проект A содержит общий код. Проект B является библиотекой на стороне сервера, а проект C является библиотекой на стороне клиента. Проекты B и C включают проект A в качестве ссылки на проект.

Теперь я хочу опубликовать проект B и проект C как пакет nuget.

Проблема заключается в том, что пакеты nuget для проектов B и C не содержат код / ??dll из проекта A. Похоже, что проект B и C хотят, чтобы проект A также являлся пакетом nuget.

Как я могу упаковать проекты B и C в виде автономных пакетов nuget? Я не хочу публиковать проект A как пакет nuget.

c#,.net,visual-studio,nuget,.net-standard,

3

Ответов: 2


2

Как я могу упаковать проекты B и C в виде автономных пакетов самородок? Я не хочу публиковать проект A как пакет самородок.

Поскольку вы используете netstandard1.4, вы не можете использовать прямой способ « donet pack» для включения ссылок на проект. Поскольку dotnet packбудет пакет только проект, а не его ссылки P2P, вы можете получить подробную информацию из документа dotnet-pack и проблему с GitHub :

Зависимости NuGet упакованного проекта добавляются в файл .nuspec, поэтому они корректно разрешаются при установке пакета. Ссылки на проект-проект не упакованы внутри проекта. В настоящее время у вас должен быть пакет на один проект, если у вас есть зависимости между проектами.

Если вы хотите, чтобы пакет B и C содержал код / ??dll из проекта A, вы можете использовать NuGet.exe для создания пакетов B и C, добавив сборки ссылок проекта в файл .nuspec:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>TestProjectB</id>
    <version>1.0.0</version>
    <authors>Tester</authors>
    <owners>Tester</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Package description</description>
    <releaseNotes>Test sample for netstandard package.</releaseNotes>
    <copyright>Copyright 2017</copyright>
    <tags>Tag1 Tag2</tags>
  </metadata>
<files>
    <file src="binDebug
etstandard1.4TestProjectB.dll" target="lib
etstandard1.4TestProjectB.dll" />
    <file src="binDebug
etstandard1.4TestProjectA.dll" target="lib
etstandard1.4TestProjectA.dll" />
</files>
</package>

В этом случае вы можете упаковать проекты B и C в виде автономных пакетов самородок, не нужно публиковать проект A как пакет самородок.


У меня возникла проблема с ответом Лео Лю-МСФ в том, что bin Debug отлично подходит для сборки отладки, но он будет падать в режиме деблокирования. Я заканчиваю тем, что меняю пути построения проекта на просто bin in debug и release, чтобы обойти это.

C # ,. сеть, визуально-студия, NuGet, .net-стандарт,
Похожие вопросы