我一直在仔细阅读关于堆栈溢出的类似问题,但无法找到这个问题的具体或确定的答案:
我目前正在使用MSVS 2013 Ultimate,并且还单独下载了MS build tools 2013。我正在尝试安装一些使用MSBuild的早期平台工具集进行编译的npm模块,并在按照MSDN关于如何Modify the Target Framework到另一个平台的说明后,这些也无法帮助我成功下载软件包。我目前的项目是处理javascript,我不会在不久的将来使用visual studio,因此我目前在更改其配置设置方面非常灵活。
我担心为了做到这一点,我不得不求助于下载VS 2012,除非有人找到明确的选择。
我目前正在Windows 8 Enterprise x64上运行所有内容。
提前感谢所有帮助。
答案 0 :(得分:0)
您可以使用MsBuild的ImportBefore
扩展点:将propertiesysheets添加到
$(VCTargetsPath)\Platforms\$(Platform)\ImportBefore
并向其添加属性,强制PlatformToolset
,而不管vcproj文件中设置的是什么。使用VS2013,与VS2012相比,这样做有点困难(我使用v110_xp工具集在那里全局构建所有内容)但它仍然有效。
假设您使用的是64位计算机,并希望覆盖Win32平台的所有C ++项目的设置,请添加名为override_platformtoolset.props的属性表(名称并不重要,只要它以.props结尾)到目录C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Platforms \ Win32 \ ImportBefore \ Default with this content:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PlatformToolSet>v110</PlatformToolSet>
<DefaultPlatformToolset>v110</DefaultPlatformToolset>
</PropertyGroup>
<Target Name="ShowOverrideInfo1" BeforeTargets="Build">
<Message Text="Overriding PlatformToolset!" Importance="high"/>
</Target>
</Project>
然后使用此内容将名为override_platformtoolset的另一个文件添加到C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \ Platforms \ Win32 \ ImportBefore:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<PlatformToolSet>v110</PlatformToolSet>
<ToolsetPropsFound>false</ToolsetPropsFound>
<MinSupportedVCTargetsVersion>v110</MinSupportedVCTargetsVersion>
</PropertyGroup>
<Target Name="ShowOverrideInfo2" BeforeTargets="Build">
<Message Text="Overriding PlatformToolset!" Importance="high"/>
</Target>
</Project>
目标只是确保您将文件放在正确的位置:如果您现在构建,您应该看到 Overriding PlatformToolset!消息两次(并查看cl.exe和链接从C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ VC \ bin调用.exe。还有什么不对劲。
如果您想知道如何/为何如此工作检查C:\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ V120中的Microsoft.Cpp.Defaults.props和Microsoft.Cpp.props.props。< / p>