我必须要打包并在其他项目中使用的一个库。该库引用了另一个我不想发布为包的项目。为了将其包括在包中,我在.cproj文件中添加了以下行:
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);CopyProjectReferencesToPackage</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<Target Name="CopyProjectReferencesToPackage" DependsOnTargets="ResolveReferences">
<ItemGroup>
<BuildOutputInPackage Include="@(ReferenceCopyLocalPaths->WithMetadataValue('ReferenceSourceTarget', 'ProjectReference'))" />
</ItemGroup>
</Target>
结果,我在包lib文件夹中都有两个.dll,也有这种nuspec文件:
<?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>
但我再次收到此错误:
找不到包引用的项目名称。源中不存在具有此ID的软件包:本地Nuget,Microsoft Visual Studio脱机软件包,nuget.org
似乎Visual Studio试图再次找到此依赖项作为nuget包。我该如何解决这个问题?
答案 0 :(得分:0)
您可以在要打包的主项目中保留该项目作为简单参考。 然后在nuspec文件中,作为dependencies元素的同级添加 references :
<references>
<reference file="referencedfile.dll" />
</references>
如果要添加简单文件,也可以使用兄弟元素 files :
<files>
<file src="bin\$configuration$\referencedfile.pdb" target="lib\net461" />
</files>