Visual studio “如何禁用”;“传递包管理”;对于VisualStudio项目 如何禁用“传递包管理”?
我希望这样做,这样我就可以安装一个我在本地“打包”并保存在.nupkg文件中的包。当我尝试这样做时,会收到一条消息,说明基于可传递包管理的项目{csproj file}不遵守“Source”参数。将使用NuGet配置中启用的源 完整上下文 在开发尚未准备好通过我们的NuGet提要分发的NuGet包时,我通常会从package manager控制台创建一个本地.nupkg文件,如下所示: nuget包{csproj文件的路径} 这将生成一个{project name}.nupkg文件,然后我可以在Visual Studio中打开它,导航到package manager控制台并输入命令,将其安装到另一个项目中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文件,然后我可以在
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。这实际上是我已经实现的解决方法。不过,我仍然有兴趣知道如何禁用传递包管理。要关闭传递包管理,我建议您可以尝试。