如何禁用“传递式包管理”?
我希望这样做,以便我可以安装一个本地“打包”到.nupkg文件中的程序包。当我尝试这样做时,会出现以下消息提示:对于基于传递式包管理的项目{csproj文件},“源”参数无效。将使用NuGet配置中已启用的源。
完整上下文
在开发尚未准备通过我们的NuGet feed进行分发的NuGet程序包时,我经常从包管理器控制台创建本地的.nupkg文件,方法如下:
nuget pack {path-to-csproj-file}
这将生成一个{project-name}.nupkg文件,然后我可以通过在Visual Studio中打开它并导航到包管理器控制台,输入以下命令来在另一个项目中安装它:
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)
显然,它没有找到我通过文件指定的包,因为它正在搜索在线源,而且它不存在于我们任何在线软件包源中——该包处于测试状态,还没有准备好供其他人使用。
根据错误消息,我需要关闭“传递式包管理”,以便我可以为该包指定一个文件源,但是我在网上找不到关于如何配置这个的任何信息。
我尝试在另一个项目中安装这个完全相同的.nupkg文件,使用相同的Install-Package {path-to-nupkg-file}过程。这个方法有效。