我想覆盖Visual Studio (devenv.exe)用于编译器和库路径的目录。我知道如何通过“工具”->“选项”->“VC++目录”以交互方式完成此操作,但我想将其自动化。
http://msdn.microsoft.com/en-us/library/t9az1d21(VS.80).aspx在这方面有一个诱人的注释:“如果您想设置目录搜索路径(用于您的项目),可以由其他用户共享或可以跨多台计算机应用,Visual C++提供了一种通过项目属性表使用此对话框的替代方法。有关更多信息,请参见属性表(C++)。”
如果您点击了属性表文档的链接,就会看到一堆关于该机制的信息,但没有一条关于需要设置的实际属性的信息。
我在%LocalAppData%\Microsoft\VisualStudio\8.0\VCComponents.dat (适用于VS2005,适用于VS2008的9.0 )中找到了由VC++目录对话框填充的信息;它似乎在VC\VC_OBJECTS_PLATFORM_INFO\win32\Directories和...\x64\Directories下设置了各种属性。
以前有没有人这样做过,并且知道从VCComponents.dat中使用的属性名称到.vsprops文件中使用的名称的映射是什么?
理想情况下,我希望它能在VS2005、VS2008和VS2010中工作。
在VS2010中,微软已经完全取消了视图选项下的VC++目录对话框,它是按项目创建的,所以现在你可以在项目属性中获得用于编辑这些目录的交互式UI,而不是视图选项;这也意味着在属性管理器中有一个用于编辑这些目录的UI;然后,如果你想要在每台机器上而不是像以前那样按项目进行更改,你只需要按照你想要的方式设置一个属性表,并让你的所有项目继承它。这听起来比以前的方式有了很大的改进。一种直接做我想做的事情的方法。但仅限于VS2010。
不过,VS2005和VS2008没有在项目或属性表中设置这些属性的UI;我很乐意手动完成这项工作,但我不知道它应该是什么样子!
下面是一个空的VS2005 .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>但是,这在VS2005中是行不通的-- VS2005拒绝加载它(抱怨没有找到DTD/模式声明)。
我将其放入容器中,作为响应,VS2005告诉我“根据父元素'VisualStudioPropertySheet‘的内容模型,元素'PropertyGroup’是意外的。期望: Tool,UserMacro。”工具和UserMacro是MSDN页面中示例中唯一显示的东西drat - StackOverflow不允许我作为新用户在这里放一个超链接--首先在谷歌搜索结果中搜索‘属性表工具user宏’--也许这是VS2005属性表中唯一合法的东西?
发布于 2011-04-04 21:59:42
首先,实际上有一个gui可以编辑属性表,就像你所说的所有VS版本下的项目属性一样。
View->Other Windows->Property Manager打开一个窗口,您可以在其中查看所有项目配置和属性表层次结构。
属性工作表可用于覆盖vcproj文件具有的所有属性,以及用户宏。为了覆盖你所说的路径,这是VS2008的一个示例属性表,它设置了中间目录、输出目录、包含目录和库目录;将它放在属性管理器中层次结构的顶部,以确保它生效:
<?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:因为您发现它使用了不同的格式,所以您必须将这两个文件分开保存。
https://stackoverflow.com/questions/2284265
复制相似问题