Visual studio 2008 如何使用.vsprops文件覆盖VC++;MS Visual Studio中的目录

Visual studio 2008 如何使用.vsprops文件覆盖VC++;MS Visual Studio中的目录,visual-studio-2008,visual-c++,visual-studio-2005,Visual Studio 2008,Visual C++,Visual Studio 2005,我想覆盖VisualStudio(devenv.exe)用于编译器和库路径的目录。我知道如何通过工具->选项->VC++目录以交互方式完成这项工作,但我想将其自动化 有一个诱人的注释:“如果您想为其他用户共享或可以跨多个计算机应用的目录搜索路径(VisualC++),Visual C++提供了一个使用项目对话框的替代方案,有关更多信息,请参见属性表(C++)。” 如果您按照“属性表”文档的链接进行操作,则会有大量有关该机制的信息,但没有关于需要设置的实际属性的信息 我在%LocalAppData

我想覆盖VisualStudio(devenv.exe)用于编译器和库路径的目录。我知道如何通过工具->选项->VC++目录以交互方式完成这项工作,但我想将其自动化

有一个诱人的注释:“如果您想为其他用户共享或可以跨多个计算机应用的目录搜索路径(VisualC++),Visual C++提供了一个使用项目对话框的替代方案,有关更多信息,请参见属性表(C++)。” 如果您按照“属性表”文档的链接进行操作,则会有大量有关该机制的信息,但没有关于需要设置的实际属性的信息

我在%LocalAppData%\Microsoft\VisualStudio\8.0\VCComponents.dat(VS 2005和VS 2008分别为9.0)中找到了由VC++目录对话框填充的信息;它似乎在VC\VC\U对象\U平台\U信息\win32\目录和…\x64\目录下设置了各种属性

以前有没有人这样做过,并且知道从VCComponents.dat中使用的属性名称到.vsprops文件中使用的名称的映射是什么

我希望它在VS2005、VS2008和VS2010中都能正常工作

在VS2010中,Microsoft完全取消了“视图选项”下的“VC++目录”对话框,将其设置为“每个项目”,因此现在您可以在“项目属性”而不是“视图选项”中使用交互式UI编辑这些目录;这也意味着在properties manager中有一个UI;然后,如果您想对每台机器进行更改,而不是像以前那样对每个项目进行更改,只需按照您想要的方式设置属性表,并使您的所有项目都从中继承。这听起来比以前的方式有了很大的改进。一种直接的方式去做我想做的事。但只有在2010年

不过,VS2005和VS2008没有在项目或属性表中设置这些属性的UI;我很高兴用手做,但我不知道它应该是什么样子

这是一个空的VS 2005.vsprops文件:

<?xml version="1.0"?>
<VisualStudioPropertySheet
    ProjectType="Visual C++"
    Version="8.00"
    Name="pathSettings"
    >
</VisualStudioPropertySheet>

我安装了VS2010,并使用它整洁的新GUI在搜索目录中进行更改;看起来是这样的:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ImportGroup Label="PropertySheets" />
  <PropertyGroup>
    <ExecutablePath>C:\Test;$(PATH)</ExecutablePath>
  </PropertyGroup>
</Project>

C:\Test$(路径)
然而,这在VS2005中无法一字不差地工作——VS2005拒绝加载它(抱怨没有找到DTD/模式声明)


我将其放入容器中,VS2005告诉我“根据父元素“VisualStudioPropertySheet”的内容模型,元素“PropertyGroup”是意外的。预期为:Tool,UserMacro。“Tool和UserMacro是MSDN页面示例中唯一显示的内容[drat-StackOverflow不会让我作为一个新用户在这里放置超链接——这是谷歌搜索“属性表工具usermacro”的第一个结果]--也许这些是VS2005属性表中唯一合法的东西?

首先,实际上有一个gui可以编辑属性表,就像您所说的所有VS版本下的项目属性一样

View->Other Windows->Property Manager
打开一个窗口,您可以在其中查看所有项目配置和属性页层次结构

属性表可用于覆盖vcproj文件的所有属性,也可以覆盖用户宏。 要覆盖您提到的路径,请参阅VS2008的axample属性表,其中设置了中间目录、输出目录、包含目录和库目录;将其放在Propert Manager层次结构的顶部,以确保其生效:

<?xml version="1.0" encoding="Windows-1252"?>
<!-- override paths -->
<VisualStudioPropertySheet
  ProjectType="Visual C++"
  Version="8.00"
  Name="PathSettings"
  IntermediateDirectory="$(TEMP)\$(ProjectName)_$(ConfigurationName)"
>
<Tool
  Name="VCCLCompilerTool"
  AdditionalIncludeDirectories="d:\api\include"
/>
<Tool
  Name="VCLibrarianTool"
  OutputFile="c:\mylibs"
/>
<Tool
  Name="VCLinkerTool"
  OutputFile="c:\myoutput"
  AdditionalLibraryDirectories="d:\api\_lib"
/>


这也适用于VS2005,但不适用于VS2010:因为您发现它使用了不同的格式,所以您必须将两者分开。

更多链接:-属性表文档:-关于VS2010中的更改的文章:我不知道的是在.vsprops文件(VS2005或2008)或.props文件(2010)中放置什么要完成与编辑VCComponents.dat相同的任务,请设置或覆盖每个生成平台的路径/include/library搜索目录。这似乎很有用/相关(仍在处理):好的,如果只有Tool和UserMacro在那里工作,也许我必须找到正确的方法来使用工具指令覆盖编译器的include路径和链接器的include路径。但这对可执行路径没有帮助,是吗?我也在MSDN上交叉发布了这个问题:嗯,看起来越来越不像这样了,这是可能的,但没有记录我知道/useev(通过环境变量设置您想要使用的目录),但一旦您想要为多个平台(比如x86和x64)构建,它就会变得难看,因为你需要为不同的平台设置不同的exe路径和lib路径。嗯,看起来很有希望。谢谢你的回答,我想知道为什么官方MS论坛在一年前不能告诉我!我很想接受你的答案,但我现在不容易验证。一个问题:这看起来与我的第三个com类似原始邮件中的声明(日期为2010年2月19日0:21,抱歉,我无法链接到它)--仅使用工具--设置用于调用工具的可执行路径如何?需要能够调用x64或x86编译器、链接器等。选择编译器等不会以这种方式工作。您可以在IDE中选择平台和配置,然后IDE将为该配置/平台选择正确的工具和属性页集。您可以这样做拥有Linker General->Advanced->Target Machine选项,尽管这应该在使用64位时在属性表中设置。好的。我没有在问题中描述,但我首先问的原因是:我们有一群开发人员在使用VC IDE的项目上工作,但在使用较新的平台SDK的基础上构建。正式构建是以d工作正常;开发人员希望使用IDE进行构建;我想要一种一站式配置ID的方法