NuGet在代理后面
本文关键字:代理 NuGet | 更新日期: 2023-09-27 18:24:07
我发现NuGet从1.4版本(2011年6月)开始允许代理设置配置。但是,我找不到任何命令行示例。
我正在尝试运行一些构建,但NuGet无法连接。
如何在命令行上配置代理设置?
以下是我使用NTLM身份验证的公司代理所做的工作。我下载了NuGet.exe,然后运行以下命令(我在CodePlex上的讨论评论中找到了这些命令):
nuget.exe config -set http_proxy=http://my.proxy.address:port
nuget.exe config -set http_proxy.user=mydomain'myUserName
nuget.exe config -set http_proxy.password=mySuperSecretPassword
这将以下内容放入位于%appdata%'NuGet
的NuGet.config
中(映射到我的Windows 7机器上的C:''Users''myUserName''AppData''Roaming):
<configuration>
<!-- stuff -->
<config>
<add key="http_proxy" value="http://my.proxy.address:port" />
<add key="http_proxy.user" value="mydomain'myUserName" />
<add key="http_proxy.password" value="base64encodedHopefullyEncryptedPassword" />
</config>
<!-- stuff -->
</configuration>
顺便说一句,这也解决了我的问题,NuGet只在我第一次在Visual Studio中访问包源代码时才工作。
请注意,一些尝试过这种方法的人通过评论报告说,他们可以省略从命令行设置
http_proxy.password
密钥,或者在配置文件中删除它,并且仍然可以在代理中使用NuGet功能
但是,如果您发现必须在NuGet配置文件中指定密码,请记住,如果您的代理凭据也是您的网络凭据,则在更改网络登录时,必须从命令行更新NuGet配置中存储的密码。
也许你可以在devenv.exe.config中尝试一下
<system.net>
<defaultProxy useDefaultCredentials="true" enabled="true">
<proxy proxyaddress="http://proxyaddress" />
</defaultProxy>
<settings>
<servicePointManager expect100Continue="false" />
<ipv6 enabled="true"/>
</settings>
</system.net>
我从NuGet Issue跟踪器中找到的
还有其他关于NuGet+网络问题的宝贵意见。
如果您使用的是NuGet的HTTPS版本,请注意您必须使用HTTPS设置值。
https_proxy
https_proxy.user
https_proxy.password
我可能错了,但我认为它使用了IE的代理设置。
如果它看到您需要登录,它会打开一个对话框并要求您登录(即登录)。
请参阅此处的描述->http://docs.nuget.org/docs/release-notes/nuget-1.5
相同的"nuget代理"的另一种风格:或者,您可以将nuget代理设置为通过fiddler连接。下面的cmd将在%APPDATA%'NuGet'NuGet.Config
的默认nuget配置文件中为用户保存代理设置
nuget config -Set HTTP_PROXY=http://127.0.0.1:8888
每当你需要上网时,只需打开Fiddler,就可以在默认端口8888上监听Fiddler。
此配置对密码更改不敏感,因为fiddler将为您解决任何带有上游代理的身份验证问题。
对于任何使用VS2015的人:我遇到了一个"需要407代理身份验证"的错误,这破坏了我的构建。经过几个小时的调查,MSBuild在尝试将Nuget作为"DownloadNuGet"目标的一部分下载时没有发送凭据。解决方案是将以下XML添加到<configuration>
元素内的C:''Program Files(x86)''MSBuild''14.0''Bin''MSBuild.exe.config中:
<system.net>
<defaultProxy useDefaultCredentials="true">
</defaultProxy>
</system.net>
我的解决方案是包括
<configuration>
<config>
<add key="http_proxy" value="http://<IP>:<Port>" />
<add key="http_proxy.user" value="<user>" />
<add key="http_proxy.password" value="<password>" />
</config>
</configuration>
在nuget.config
文件中。
也许这对其他人有帮助。对我来说,解决方案是在Visual Studio(2015/2017)上打开NuGet设置,并添加一个新的提要URL:http://www.nuget.org/api/v2/.
我不需要更改任何与代理相关的设置。
在我开发的Windows Server 2016 Standard上,我只需要打开凭据管理器控制面板,清除不再有效的Visual Studio缓存代理设置,然后重新启动Visual Studio。下次我打开Nuget软件包管理器时,系统会提示我输入代理凭据,这让我重新开始工作。
请参阅:https://support.microsoft.com/en-us/help/4026814/windows-accessing-credential-manager
只是一个小的添加。。。
如果只提供http_proxy设置而不提供用户名和密码是可行的,我建议将代理设置放在项目本地nuget.config文件中,并将其提交给源代码管理。这样,所有团队成员都可以获得相同的设置。
创建一个空的。''nuget.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
</configuration>
然后:
nuget config -Set http_proxy="http://myproxy.example.com:8080" -ConfigFile .'Nuget.Config
最后提交您的新项目本地Nuget.config文件。
你好,我要进入
%appdata%/Roaming/Nuget/Nuget.Config并删除除包源之外的每一行。这应该会给出类似的东西
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" protocolVersion="3" />
</packageSources>
</configuration>
完整路径应为C:''Users<用户名>''AppData''Roaming''NuGet''NuGet.Config
基本上有一个代理集,我不知道它是如何设置的,为什么设置的,但它就在那里,我也无法ping它。
试试这个。基本上,如果您的系统不信任nuget证书,连接可能会失败。
除了@arcain的建议外,我不得不将以下Windows Azure内容交付网络url添加到我们的代理服务器的白名单中:
.msecnd.net
@arcain Plus的上述解决方案下面的步骤解决了问题
-
修改Nuget包管理器设置下的"包源"以进行检查使用nuget.org设置的复选框解决了我的问题。
-
我也改为使用它(nuget.org)作为包源的第一选择
我确实取消了我公司包的来源,以确保nuget总是被选中来自全球的资源。
作为一个迟到的回答,对我来说,这里什么都不起作用。我想这可能取决于您的公司代理或nuget
的实现方式,但出于某种原因,我设置了以下环境变量:http_proxy
和https_proxy
。在我移除它们之后,nuget
开始正常工作。
它是相关的,但在这里不是相同的场景,但我想为Linux上的场景做文档。
我在Fedora 35上使用VsCode和dotnet sdk 6安装的
要在代理后面使用dotnet add package
,我必须使用以下命令格式:
export http_proxy=http://[user]:[pass]@[server]:[port] && dotnet add package <package>