У меня есть одна библиотека, которую я хочу упаковать и использовать в других проектах. Эта библиотека имеет ссылку на другой проект, который я не хочу публиковать sh как пакет. Чтобы включить его в пакет, я добавил следующие строки в файл .cproj:
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
<ItemGroup>
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
</ItemGroup>
</Target>
В результате у меня есть как .dll в папке lib пакетов, так и файл nuspe c:
<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<metadata>
<id>NugetSample</id>
<version>1.0.1</version>
<authors>NugetSample</authors>
<owners>NugetSample</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package Description</description>
<dependencies>
<group targetFramework=".NETCoreApp3.1">
<dependency id="referenced project name" version="1.0.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
</package>
Но я снова получаю эту ошибку:
Невозможно найти имя проекта, на которое ссылается пакет. В источнике (ах) нет пакетов с этим идентификатором: Local Nuget, Microsoft Visual Studio Offline Packages, nuget.org
Кажется, что Visual Studio снова пытается найти эту зависимость как пакет nuget. Как я могу решить эту проблему?