VS 2015 + Bower:在防火墙后面不起作用
问题
在Visual Studio 2015中,使用bower时,我的软件包在防火墙后面恢复失败,出现类似如下的错误:
ECMDERR无法执行“git ls-remote –tags – heads git://github.com/jzaefferer/jquery-validation.git”,退出代码#-532462766
我已经更新了我的gitconfiguration使用http
而不是git。 当我从命令行运行时,命令成功:
但Visual Studio或其组件之一似乎是使用git
而不是http
。
背景和第一次尝试解决
使用Visual Studio 2015和Bower进行包pipe理。 当它不在防火墙后面时,它很好用,但是在防火墙后面,我不能使用git://
协议。
解决scheme – 在许多其他地方logging在SO( 例子 ),是运行:
git config --global url."http://".insteadOf git://
我做到了,现在我的git config -l
看起来像:
ore.symlinks=false core.autocrlf=true color.diff=auto color.status=auto color.branch=auto color.interactive=true pack.packsizelimit=2g help.format=html http.sslcainfo=/bin/curl-ca-bundle.crt sendemail.smtpserver=/bin/msmtp.exe diff.astextplain.textconv=astextplain rebase.autosquash=true user.name=Sean Killeen user.email=SeanKilleen@gmail.com url.http://.insteadof=git://
但是,尽pipe如此,Visual Studio / npm不尊重我的configuration,或者使用旧的caching版本。
第二次尝试解决
根据npm问题上的这个线程 ,我看到npm(大概是在VS中使用的)使用git@
语法。 即使这不是我在输出中看到的,我想我会试试看。
我跑了:
git config --global url."https://github.com/".insteadOf git@github.com:
然后我重新启动Visual Studio,但问题仍然存在。 我读到的修复可能永远不适用。
任何想法如何解决?
同样的问题使用VS 2015,我的解决方法:
-
安装Git
-
configurationGit使用http而不是git://和Git Bash
git config –global url。“http://”.insteadOf git://
编辑(如g.pickardou指出的)你可以使用https来更安全:
git config –global url。“ https ://”.insteadOf git://
-
configurationVS使用新安装的Git over VS Git
右键单击Bower文件夹(依赖项下),然后select“configuration外部工具”
取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”
用“C:\ Program Files(x86)\ Git \ bin”添加一个新节点
希望这会帮助别人,
罗杰里奥
微软的git版本已经安装(至less在VS2015 Update 1中) 确实会使用.gitconfig文件,但是默认安装的工具并没有给你一个操纵它的方法(就像其他所有使用git config解决问题)。
要解决这个问题,没有任何额外的安装,只要在C:\ Users \ YourUserName中创build一个.gitconfig文件,并把这个内容放在那里(这是git config –global会做的内容,但是因为你没有git .exe,可以改变configuration,你不能使用,没有安装别的东西,你真的不需要)
[url“https://github.com/”] insteadOf = git@github.com: [url“https://”] insteadOf = git://
VS2015 Release的解决scheme是:
- 安装git命令行工具。
-
使用以下内容修改文件C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ bower.cmd。
set PATH=C:\Program Files (x86)\Git\bin\;%PATH% git config --global url."http://".insteadOf git:// git config -l @"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*
我有同样的问题。 显然VS2015 CTP附带的Git.exe不使用.gitconfig。 但是你可以修复它(手动),如果你有其他地方安装的git命令行工具。
在C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External
您将需要编辑文件bower.cmd
。
注释第4行和第5行:
rem -- set GIT_PATH=%~dp0\git rem -- set PATH=%GIT_PATH%;%PATH%`
这将触发命令使用你已经安装的Git,它会拿起本地.gitconfig。
确保你已经设置了合适的git设置:
git config --global url."http://".insteadOf git://
与VS 2015,更新2:只需安装Git
我在Visual Studio 2015 RC(而不是CTP)中遇到了同样的问题并得到解决。
在2015 RC的bower.cmd不能正常工作,所以我需要禁用它在我的VS和使用我的电脑上安装的官方。 只需右键单击项目中的“Bower”文件夹并select“configuration外部工具”,然后取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”部分即可。
您可能还需要更改“.bowerrc”文件,以使GIT在正确的path上为您的项目工作。
这样做之后,一切都按预期工作。
绝对有效的最简单的答案就是在这里。 这个问题让我很头痛。 只需下载git并安装它。 在安装时select这个选项。 从Windows命令提示符运行Git
我在Visual Studio 2015 RC(而不是CTP)有这个相同的问题。 由于这是我在任何地方find的唯一相关的线程,所以我想在这里添加我的2c。
扩展@ MagicMau的答案,引用的bower.cmd中的行在2015 RC中不存在,所以我采取了不同的方法并设置了PATH envvariables,以便我的整个bower.cmd文件如下所示:
set PATH=C:\Program Files (x86)\Git\bin\;%PATH% @"%~dp0\node\node" "%~dp0\bower\node_modules\bower\bin\bower" %*
请注意,第一行是我添加的,第二行是现有的内容。
我第一次这样做,Visual Studio在程序包恢复期间崩溃了,但似乎在VS重新启动后正在工作。
设置正确的代理设置是非常痛苦的。 我分享我的解决scheme。
我使用Visual Studio 2015在Windows 10上工作。我在工作时必须设置代理设置,并在家中删除它们。
要做到这一点,你有两个解决scheme。
- configurationVisual Studio外部工具以使用适当的设置
- 在你的机器上安装工具(node,npm,bower)并使用它们(你可以设置Visual Studio选项来使用它们)
解决scheme1(configurationVS外部工具)
-
configurationNpm。 在pipe理提示符下执行以下cmd。
> cd "C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\Web Tools\External" > npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080 > npm.cmd config set --global http_proxy http.proxy http://proxyuser:proxypwd@proxy.server.com:8080
-
configurationGit。 添加位于C:\ Windows \ Users \%USERNAME%的.gitconfig文件。 然后添加以下键/值。
[http] proxy = http://proxyuser:proxypwd@proxy.server.com:8080 [https] proxy = http://proxyuser:proxypwd@proxy.server.com:8080
-
configuration鲍尔。 添加位于C:\ Windows \ Users \%USERNAME%的.bowerrc文件。 然后添加以下键/值。
{ "proxy": "http://proxyuser:proxypwd@proxy.server.com:8080", "https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080" }
警告 :如果您的代理密码中有特殊字符,则必须对代理url进行编码。 例:
- 用户名 :DOMAIN \用户名
- 密码 :P @ $$ w0rd
- 代理服务器 :10.80.0.0
- 代理端口 :8080
- 带validation的PROXY URL : http://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@10.80.0.0:8080
EtVoilà:)
解决scheme2(在您的机器上安装工具)
我已经在我的机器上全局安装了node.js,npm,git和bower(因为我需要的不仅仅是VS中的外部/工具)。
- 安装Node.js: NodeJS网站
- 安装Npm 注 :Npm由Node.js自动安装。 (换句话说,让node.js为你安装)
- 安装Git: Git网站只要确保选中此选项即可在Windows提示符下运行Git命令
- 安装Bower(globalement):
npm install -g bower
- configurationVisual Studio工具以使用安装的新工具。 为此,启动Visual Studio => Tools => Options =>打开节点“Projects and Solutions”=>打开外部Web工具=>取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”。 添加新的“C:\ Program Files文件(x86)\ Git \ bin”
- 设置代理设置。 以pipe理员身份在PowerShell中运行脚本
我为Windows创build了2个PowerShell脚本来设置/取消设置代理设置(在Windows 10上testing)。
-
在工作中 ,我需要设置代理设置。
在
> ./proxy.ps1
中运行> ./proxy.ps1
-
在家里 ,我必须删除代理设置。
在
> ./proxy.disabled.ps1
中运行> ./proxy.disabled.ps1
proxy.ps1
# System Environment variable $env:HTTP_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080" $env:HTTPS_PROXY = "http://proxyuser:proxypwd@proxy.server.com:8080" # Fix (some tools uses lowercase env variables) $env:http_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080" $env:https_proxy = "http://proxyuser:proxypwd@proxy.server.com:8080" # Git config git config --global http.proxy http://proxyuser:proxypwd@proxy.server.com:8080 git config --global https.proxy http://proxyuser:proxypwd@proxy.server.com:8080 # Npm config npm config set proxy http://proxyuser:proxypwd@proxy.server.com:8080 npm config set https-proxy http://proxyuser:proxypwd@proxy.server.com:8080 # Restart Windows Restart-Computer -Confirm
proxy.disabled.ps1
# Delete System Environment variable Remove-Item env:\HTTP_PROXY Remove-Item env:\HTTPS_PROXY Remove-Item env:\http_proxy Remove-Item env:\https_proxy # Reset Git Config git config --global --unset http.proxy git config --global --unset https.proxy # Reset Npm Config npm config --global delete proxy npm config --global delete https-proxy # Restart Windows Restart-Computer -Confirm
警告 :如果您的代理密码中有特殊字符,则必须对代理url进行编码。 例:
- 用户名 :DOMAIN \用户名
- 密码 :P @ $$ w0rd
- 代理服务器 :10.80.0.0
- 代理端口 :8080
- 带validation的PROXY URL : http://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@10.80.0.0:8080
警告 :UNSET PROXY =>一些凉亭设置可以在位于C:\ Users \%USERNAME%的.bowerrc文件中覆盖。 换句话说,如果不起作用,请检查是否有.bowerrc文件。 然后删除以下键如果它们存在:
{ ... "proxy": "http://proxyuser:proxypwd@proxy.server.com:8080", "https-proxy": "http://proxyuser:proxypwd@proxy.server.com:8080", ... }
警告 :UNSET PROXY =>某些nmp /节点设置可以在位于C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ Web Tools \ External \ node \ etc的npmrc文件中被覆盖。 换句话说,如果不起作用,请检查您是否有npmrc文件。 然后删除以下键如果它们存在:
http_proxy="http://proxyuser:proxypwd@proxy.server.com:8080" https_proxy="http://proxyuser:proxypwd@proxy.server.com:8080"
EtVoilà:)
如果你有一个防火墙pipe理员,通过定义下面的防火墙策略,让他允许访问外部的git仓库:
TCP 9418(不需要UDP)
使用映射的主文件夹从命令行运行VS的Bower
@Rogerio Soares给出的答案是一个很好的答案,我想很多人会觉得它非常有用(包括我自己)。
也就是说,在这里工作,我可以安装的工具是非常非常有限的(这意味着我不能安装另一个版本的鲍尔没有得到许多人的许可),再加上我的主目录映射到z:\
由政策。 每次我发布git config --global
来configurationgit,configuration设置将被放置在z:\.gitconfig
。 使用全面的Git SCM,这个configuration文件是很好的。 然而,显然,libgit2sharp(由Visual Studio 2015embedded的Git版本使用)需要此文件位于c:\username\.gitconfig
。
所以在将我的.gitconfig
文件从z:\
复制到c:\username\
,我能够直接从命令行运行Visual Studio的bower版本。
如果你想要一个全球解决scheme 。
警告 :它可以通过不同的应用程序影响几个代理设置,但它肯定是你想要的:)
注意如果您的代理设置中的用户名:密码中包含特殊字符,则需要URLENCODED它们。 例如: http://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@proxy.server.com:8080
您必须添加2个环境variables。
- HTTP_PROXY: http:// proxyuser:proxypwd@proxy.server.com:8080
- HTTPS_PROXY: http:// proxyuser:proxypwd@proxy.server.com:8080
要在Windows 10上做到这一点:
- 开始
- search“编辑系统环境variables”
- (在系统属性的进一步选项卡中)单击“环境variables…”
- (在系统variables中)单击“新build…”
- 创buildvariables(variables名称:HTTP_PROXY,variables值: http:// proxyuser:proxypwd@proxy.server.com:8080 )
- 创buildvariables(variables名称:HTTPS_PROXY,variables值: http:// proxyuser:proxypwd@proxy.server.com:8080 )
- 重新启动Windows