Visual studio 2013 仅安装Visual Studio 2013的NPM本机版本

Visual studio 2013 仅安装Visual Studio 2013的NPM本机版本,visual-studio-2013,npm,Visual Studio 2013,Npm,我已经安装了一个干净的Windows,安装了Visual Studio 2013 Pro,以及当前版本的Python、node和npm 我正在尝试安装pgnpm软件包,但它需要本机版本,并且失败: C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): 错误MSB8020:Visual Studio 2012的生成工具(平台 找不到工具集='v110')。要使用v110构

我已经安装了一个干净的Windows,安装了Visual Studio 2013 Pro,以及当前版本的Python、node和npm

我正在尝试安装
pg
npm软件包,但它需要本机版本,并且失败:

C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.Cpp.Platform.targets(64,5): 错误MSB8020:Visual Studio 2012的生成工具(平台 找不到工具集='v110')。要使用v110构建 工具,请安装Visual Studio 2012生成工具。或者, 您可以通过选择 项目菜单或右键 -单击解决方案,然后选择“升级解决方案…”。 [C:\Users\Aaron\AppData\Roaming\npm\node\u modules\pg\build\binding.vcxproj]

我似乎找不到所描述的VisualStudio2012的构建工具,我当然不希望仅仅为了这个需要而安装VS2012。有没有办法强制安装和构建使用可用的2013编译器/工具,而不更改包的代码


我找不到任何人用我的Google Fu来描述这个特定问题和解决方案。

我只在Visual Studio 2013上安装了太干净的Windows 8.1(64位)Pro(没有以前版本的VS,尽管SQL Server 2014附带了一些组件)。npm install命令失败,出现类似错误

所以我尝试指定VS版本

npm install --msvs_version=2013 <package>
然后安装了软件包

以下版本仅供参考:
与2013年保费相比
Python 2.7.8
C:\Windows\system32>npm版本
{http_解析器:“1.0”,
节点:“0.10.29”,
v8:'3.14.5.9',
战神:“1.9.0-DEV”,
紫外线:“0.10.27”,
zlib:'1.2.3',
模块:“11”,
openssl:'1.0.1h',

npm:'1.4.14'}

通过以下方式将
节点gyp
更新至最新版本(1.0.2):
npm安装节点gyp-g

请注意,您还必须

现在,
node gyp
将支持您的Visual Studio 2013-您可以在
\u CreateVersion
方法中签入
/node\u modules/node gyp/gyp/pylib/gyp/MSVSVersion.py

但是,本机模块仍然无法生成,这会导致一个错误,即某些包含文件丢失(来自Windows SDK的文件,如say
winsock2.h
)。这是因为Visual Studio 2013与默认的7.1A SDK捆绑在一起。但是默认的工具集设置是“v120”,它需要8.1 SDK(需要另外安装)

要仅使用stock VS 2013进行构建,您需要更改选择的工具集。您可以通过修改
~/.node gyp/common.gypi
文件(想法取自),并将工具集改为“v120\u xp”(将使用捆绑的7.1A SDK)来实现这一点:


{
...
“目标_默认值”:{
...
“配置”:{
...
“释放”:{
“条件”:[
['target_arch==“x64”{
“MSV\u配置\u平台”:“x64”,

“msbuild_toolset”:“v120_xp”帮助我的是指定环境变量GYP_MSVS_VERSION以使用正确的VS
在运行npm之前,您可以在控制中心或控制台中进行设置,因此对于2013年来说是这样的

set GYP_MSVS_VERSION=2013 设置GYP\U MSVS\U版本=2013 2015年,您使用

set GYP_MSVS_VERSION=2015 设置GYP\U MSVS\U版本=2015 免费VS 2013或2015社区版应该是最简单的方式

PS
我认为对于VS 2013 Express,您应该使用

set GYP_MSVS_VERSION=2013e 设置GYP_MSVS_版本=2013e
其中e告诉npm使用快速版本,我在VS2015中遇到了类似的错误,但设置了msvs参数:

npm config set msvs_version 2013 --global
npm安装——msvs\u版本=2015

没有解决问题。我可以看出,无论我做什么,它都在错误的地方寻找工具集

长话短说,我了解到MSBuild现在已与Visual Studio打包,而不再与.NET打包。果然,我在PATH变量中有以下条目:

C:\Windows\Microsoft.NET\Framework\v4.0.30319;
因此调用了错误(旧)版本的MSBuild。我删除了此条目,并添加了与VS2015相关的以下路径:

C:\Program Files (x86)\MSBuild\14.0\Bin\

问题已解决。

您可以使用--msvs\u version=2012(例如)提供其他版本在npm中。我不认为有一个官方的2013切换/这看起来像这里的标志列表?更好的是,你也可以全局设置版本,例如npm config set msvs_version 2012--global@ErikVullings-那么,
npm config set msvs_version 2013--global
?(问题是关于使用VS 2013的)谢谢,前两个步骤为我解决了问题。在干净安装VS 2013之后,我在MSBuild/Microsoft.Cpp中没有任何文件夹。我花了一天的时间试图实现这一点。我希望这些神奇的环境变量能够以某种方式记录下来。你是一个传奇人物!太棒了。我一直在关注这个问题,但从未找到解决方案。我有VS 2015 Enterprise installed和以下不带引号的命令“set GYP_MSVS_VERSION=2015”修复了我的问题!
C:\Program Files (x86)\MSBuild\14.0\Bin\