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,我的解决方法:

  1. 安装Git

    http://git-scm.com/

  2. configurationGit使用http而不是git://和Git Bash

    git config –global url。“http://”.insteadOf git://

    编辑(如g.pickardou指出的)你可以使用https来更安全:

    git config –global url。“ https ://”.insteadOf git://

  3. 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是:

  1. 安装git命令行工具。
  2. 使用以下内容修改文件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

http://git-scm.com/

我在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。

  1. configurationVisual Studio外部工具以使用适当的设置
  2. 在你的机器上安装工具(node,npm,bower)并使用它们(你可以设置Visual Studio选项来使用它们)

解决scheme1(configurationVS外部工具)

  1. 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 
  2. configurationGit。 添加位于C:\ Windows \ Users \%USERNAME%的.gitconfig文件。 然后添加以下键/值。

     [http] proxy = http://proxyuser:proxypwd@proxy.server.com:8080 [https] proxy = http://proxyuser:proxypwd@proxy.server.com:8080 
  3. 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 URLhttp://DOMAIN%5Cuser+name%3AP%40%24%24w0rd@10.80.0.0:8080

EtVoilà:)

解决scheme2(在您的机器上安装工具)

我已经在我的机器上全局安装了node.js,npm,git和bower(因为我需要的不仅仅是VS中的外部/工具)。

  1. 安装Node.js: NodeJS网站
  2. 安装Npm :Npm由Node.js自动安装。 (换句话说,让node.js为你安装)
  3. 安装Git: Git网站只要确保选中此选项即可在Windows提示符下运行Git命令 git安装屏幕截图
  4. 安装Bower(globalement): npm install -g bower
  5. configurationVisual Studio工具以使用安装的新工具。 为此,启动Visual Studio => Tools => Options =>打开节点“Projects and Solutions”=>打开外部Web工具=>取消选中“$(DevEnvDir)\ Extensions \ Microsoft \ Web Tools \ External \ git”。 添加新的“C:\ Program Files文件(x86)\ Git \ bin”
  6. 设置代理设置。 以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 URLhttp://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上做到这一点:

  1. 开始
  2. search“编辑系统环境variables”
  3. (在系统属性的进一步选项卡中)单击“环境variables…”
  4. (在系统variables中)单击“新build…”
  5. 创buildvariables(variables名称:HTTP_PROXY,variables值: http:// proxyuser:proxypwd@proxy.server.com:8080 )
  6. 创buildvariables(variables名称:HTTPS_PROXY,variables值: http:// proxyuser:proxypwd@proxy.server.com:8080 )
  7. 重新启动Windows