Visual studio “如何禁用”;“传递包管理”;对于VisualStudio项目 如何禁用“传递包管理”?

Visual studio “如何禁用”;“传递包管理”;对于VisualStudio项目 如何禁用“传递包管理”?,visual-studio,nuget,visual-studio-2019,nuget-package,Visual Studio,Nuget,Visual Studio 2019,Nuget Package,我希望这样做,这样我就可以安装一个我在本地“打包”并保存在.nupkg文件中的包。当我尝试这样做时,会收到一条消息,说明基于可传递包管理的项目{csproj file}不遵守“Source”参数。将使用NuGet配置中启用的源 完整上下文 在开发尚未准备好通过我们的NuGet提要分发的NuGet包时,我通常会从package manager控制台创建一个本地.nupkg文件,如下所示: nuget包{csproj文件的路径} 这将生成一个{project name}.nupkg文件,然后我可以在

我希望这样做,这样我就可以安装一个我在本地“打包”并保存在.nupkg文件中的包。当我尝试这样做时,会收到一条消息,说明基于可传递包管理的项目{csproj file}不遵守“Source”参数。将使用NuGet配置中启用的源

完整上下文 在开发尚未准备好通过我们的NuGet提要分发的NuGet包时,我通常会从package manager控制台创建一个本地.nupkg文件,如下所示:

nuget包{csproj文件的路径}

这将生成一个{project name}.nupkg文件,然后我可以在Visual Studio中打开它,导航到package manager控制台并输入命令,将其安装到另一个项目中

Install-Package {path-to-nupkg-file}
这非常有效,一旦NuGet包准备好分发,我们就将其推送到Azure DevOps,并让那里的构建管道将其推送到我们的提要中

然而,我最近刚刚继承了一个项目,先前的开发人员显然设置了“可传递的包管理”来阻止这个工作流。以下是我尝试直接从.nupkg文件安装时得到的结果:

Install-Package C:\Users\Josh\source\repos\SpeakerDiscountManager\SpeakerDiscountData.1.0.5.nupkg
The 'Source' parameter is not respected for the transitive package management based project(s) MembershipApplicationWidget\MembershipApplicationWidget.csproj. The enabled sources in your NuGet configuration will be used. 
<snipped several lines of unsuccessfully searching configured package sources>
Install-Package : NU1102: Unable to find package SpeakerDiscountData with version (>= 1.0.5)
安装程序包C:\Users\Josh\source\repos\SpeakerDiscountManager\SpeakerDiscountData.1.0.5.nupkg
基于可传递包管理的项目MembershipApplicationWidget\MembershipApplicationWidget.csproj不考虑“Source”参数。将使用NuGet配置中启用的源。
安装程序包:NU1102:找不到版本为(>=1.0.5)的程序包SpeakerDiscontData
显然,它找不到我通过文件指定的包,因为它正在搜索在线提要,并且它不存在于我们的任何在线包源中——该包处于测试状态,除了我之外,任何人都无法使用

根据错误消息,我需要关闭“transitive package management”,以便为包指定文件源,但我无法联机显示有关如何配置的任何信息

我确实尝试过在另一个项目中安装这个完全相同的.nupkg文件,使用相同的安装包{path to nupkg file}过程。这很有效

如何为VisualStudio禁用“传递包管理” 计划

我认为这个问题与您当前的项目结构有关,它有一些复杂的依赖关系、自定义规则等等因此,关闭
可传递包管理
是不切实际的。如果您创建其他项目,然后按照自己的方式安装此软件包,我认为它可能不会发生

作为最佳解决方法,正如您所说(消息
中的提示将使用NuGet配置中已启用的源。
),将本地NuGet包的路径添加到NuGet包源中

在您这边,我想您指定了
-Source xxxxx(nuget软件包的路径)
来在
软件包管理器控制台
中安装这个软件包,如果是这样,这个功能实际上是不方便的

您只需添加SpeakerDiscontData.1.0.5.nupkg所在的文件夹路径即可。完成后,它将应用于此计算机中的任何项目

它有两种方式:

1)VS IDE UI

工具
-->
选项
-->
NuGet软件包管理器
-->
软件包源
-->添加新密钥并输入NuGet文件夹的路径。此外,请选中它的选项

2)global numget.Config文件

C:\Users\xxxx\AppData\Roaming\NuGet\NuGet.Config
步骤1只是通过VS UI控件将路径添加到此文件中)

添加以下内容:

<packageSources>
    <add key="Local Packages Source" value="C:\Users\Josh\source\repos\SpeakerDiscountManager\" />
..........
</packageSources>


作为一种解决方法,我添加了一个本地包源代码,该源代码指向我删除.nupkg文件的目录。但是我仍然想知道如何恢复我在其他项目中的行为,在那里,
Install Package{path to nupkg file}
将安装一个NuGet包。谢谢,Perry。这实际上是我已经实现的解决方法。不过,我仍然有兴趣知道如何禁用传递包管理。要关闭传递包管理,我建议您可以尝试。