我已经为我们的开发团队在VSTS上设置了一个新的团队项目,并使用Package-Management
扩展来发布我们的NuGet包。
我还启用了公共nuget.org
Feed作为内部包Feed的上游源。
根据建议here& here我取消选中nuget.org作为Visual Studio中的包源 现在我希望搜索首先找到发布到此Feed的包 如果没有,那么从上游获取它。 但事实并非如此,我无法从nuget.org添加软件包 除非我在Visual Studio中启用nuget.org作为包源。
一旦我将包发布到我的Feed,nuget.org(通过启用nuget.org添加)的包开始出现在我的私人订阅源中。(即使我取消选中nuget.org来源) 但我无法直接从上游使用新的软件包,而无需将nuget.org作为源。
我是否误解了这应该是构建机器配置而不是开发人员机器配置?
答案 0 :(得分:1)
您错过了documentation:
中的这一部分如果您正在使用上游源,则在上游使用package-versions 尚未保存到您的Feed中的来源(通过使用它们 至少一次)不会出现在NuGet Package Manager搜索中。至 安装这些包:
- 在上游源(例如nuget.org)上,复制Install-Package 命令。
- 在Visual Studio中,从“工具”中打开“程序包管理器控制台” - > NuGet包管理器。
- 将Install-Package命令粘贴到程序包管理器控制台并运行它。
醇>
答案 1 :(得分:0)
如您所见,您还应该选择nuget.org包源(两者都选择VSTS feed和nuget.org作为包源)。
如果您在VS中取消选择nuget.org包源,则表示nuget.org中的包将无法使用。
为了首先从VSTS Feed搜索包,然后在nuget.org中搜索,您可以通过过滤来自不同包源的包来实现:
首先从VSTS Feed中搜索一个包(例如NUnit包)(下面的例子,这个名称是新的):
将Package source指定为新的,如果在浏览列表中显示相关的包,则可以使用VSTS feed中的包。如果没有包列表,这意味着VSTS提要没有相关的包,那么你可以从nuget.org获取如下步骤。
要从nuget.org搜索软件包(NUnit),您只需将软件包源更改为nuget.org,然后VS将列出存储在https://api.nuget.org/v3/index.json中的相关软件包。
答案 2 :(得分:0)
在 Visual Studio 中(我使用的是 VS 2019),来自上游的包的更新版本应自动出现在下拉列表中,以下情况除外:
如果 PackageA
依赖于 PacakageB
,但未明确安装 PackageB
(即您没有在项目的 Manage NuGet Packages
页面中明确添加它),则 {{ 1}} 将冻结在隐式安装的最后一个版本。
示例:
在您的 PackageB
页面上,您安装了 Manage NuGet Packages
5.0.0 版。这会导致您的应用隐式依赖于 System.Text.Json
5.0.0。
一段时间后,您将 System.Text.Encodings.Web
升级到 5.0.1 版。 System.Text.Json
还有一个新的 5.0.1 版本,但由于 System.Text.Encodings.Web
5.0.1 依赖于 System.Text.Json
>= 5.0.0,因此您的提要中已有的版本满足隐式依赖关系。您的 Feed 将保留 5.0.0 版本。
稍后您需要更新到 System.Text.Encodings.Web
5.0.1 版。您在 NuGet 包页面上搜索 System.Text.Encodings.Web
,但请注意版本 5.0.0 是唯一可用的版本!
解决方案
4.1.在 5.0.0 版上单击安装。这将使包成为显式依赖项。
4.2.现在,在更新选项卡上,您将看到 5.0.1 作为更新选项出现。