我正在尝试将项目用作其他解决方案中的nuget包。
我要使用的项目在他所在的解决方案中有2个对其他项目的引用。
我正在要用作nuget包的项目的路径中使用cli命令dotnet pack
创建.nupkg文件。
使用命令dotnet add package
将.nupkg文件添加到其他解决方案时,我在帖子标题中得到了带有两个引用项目名称的错误。
答案 0 :(得分:0)
使用dotnet cli:
正如@ Lex Li 所建议的那样,要使用dotnet add package xxx
之类的命令来引用您自己创建的本地包,您可以选择设置本地供稿并将其推送到供稿之前您可以这样做。(您也可以选择将软件包发布到nuget.org和其他供稿)
一种配置本地feed的简单方法:Nuget.config文件控制使用nuget包的行为,您可以在%appdata%\NuGet\NuGet.Config
上找到适用于当前用户的Nuget.config文件。您可以使用如下语句:
<add key="Local Packages" value="C:\path\..." />
将文件夹设置为本地供稿。然后将您的xx.nupkg文件放入其中,您的问题将消失。您也可以在VS中通过UI设置供稿,请参见Install it by VS
中我的以下描述。 (除此之外,您还可以使用Nuget Server。)
通过VS安装:
由于您要在安装了VS的本地计算机上使用软件包,因此也可以考虑使用VS nuget软件包管理器UI,请参见this document。
在VS中执行此操作的一种简单方法是转到Tools=>nuget package manager=>package manager settings=>package source
,单击绿色按钮以定义新的软件包源,例如C:\xxx\MyLocalPackages
:
将您的xxx.nupkg文件复制到该文件夹中,然后在VS中右键单击project => Manage nugetpackages =>选择正确的包源,即可轻松使用它:
该文件夹也将为您提供本地供稿。
此外:
我正在使用cli命令dotnet pack 创建.nupkg文件。您可以将xx.nupkg重命名为xx.zip,并检查其lib
文件夹的内容。请确保所引用的两个项目的程序集位于此处。(在解决您的原始问题后,我遇到了这个新问题。)如果它们不存在,您可能会遇到类似this的问题,这里是{ {3}}来自马丁。
更新1:(有关Martin解决方法的更多详细信息) 在VS中卸载项目以编辑xx.csproj,然后将以下脚本添加到其中:
<Project>
...
<PropertyGroup>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2PAssets</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include = "..\ProjectName\ProjectName.csproj" PrivateAssets="All" />
</ItemGroup>
<Target Name = "IncludeP2PAssets" >
<ItemGroup>
< BuildOutputInPackage Include="$(OutputPath)\ProjectName.dll" />
</ItemGroup>
</Target>
</Project>
将ProjectName替换为您依赖的项目的名称。然后在VS中构建它,您可以在bin \ debug或bin \ release中找到xx.nupkg。 (它应该适用于.net core或.net标准,并且我已经对其进行了检查)
任何更新随时让我知道:)
答案 1 :(得分:0)
我的解决方案来自Visual Studio主菜单:
Tools=>Options=>Nuget Package Manager=>Click On Package Sources
现在添加以下软件包(请参见屏幕截图),然后单击“确定”。
构建您的应用程序,它将没有错误。