使用VS2010更改项目设置

null

嗨,我是Andreea Isac,微软上Visual C++团队的开发者。我想向您介绍与以前的VS版本相比,VisualStudio2010以不同方式或位置存储的所有项目设置的摘要。

MSBuild语法

如果您浏览磁盘上的项目文件,您会注意到我们的默认项目扩展名从.vcproj更改为.vcxproj。属性页的文件扩展名从.vsprops更改为.props,并且其内容格式更改为 msbuild语法 . 正如Marian Luparu在这篇文章中所解释的 博客文章 , 对于VC构建系统来说,使用msbuild语法是向前迈出的一大步。它为C++开发人员提供了一个开放的、可扩展的、可定制的体系结构,丰富了一些酷的特性(比如更好的诊断)。

自定义生成规则

自定义生成规则不再仅通过.rules文件实现,而是通过.props/.targets/.xml文件的三元组实现。 VS2010会自动将项目引用的所有规则文件转换为相应的.props/.targets/.xml。我们计划单独发布一篇关于自定义构建规则的博文,但在此之前,让我简要描述一下这三个文件。 因为属性页在VS2010中是数据驱动的(如中所述) 这篇文章 ) ,吨 xml文件支持自定义生成规则的属性页UI,同时定义生成期间将调用的任务 . 这个 “. 道具 文件包含xml文件中定义的属性的默认值。目标文件定义自定义生成规则的生成行为。自定义生成规则信息在三个不同的组件(属性表、内联任务和属性页)中有更好的结构,并与项目系统和生成功能更无缝地集成。

过滤器

如果您检查项目文件的内容,您将看到过滤器信息是如何不再在那里定义的。它们现在存在于一个补充文件中,与磁盘上的项目文件位于同一级别,名称始终采用以下格式:[ProjectName].vcxproj.filters。因此,构建信息与解决方案资源管理器显示信息分离,增量构建不会受到独占UI设置更改的影响。

项目依赖关系

在Orcas之前,我们只在解决方案文件中定义项目依赖关系,在项目文件中定义项目引用。此外,在某些情况下,项目依赖关系 暗示了一个参考 隐式地,例如,可执行文件和库项目之间的解决方案依赖关系将自动将依赖关系传递到链接命令行(不超过在解决方案级别定义的项目引用)。在VS2010中,我们不再支持定义隐式引用的项目依赖关系,我们还引入了一种在项目级别定义项目依赖关系的新方法。由于项目引用和项目依赖关系是密切相关的概念,两者都适用于项目,因此在项目文件中以一致的方式将它们表示在一起是有意义的。正如您将在下面的代码段中看到的,项目引用定义和项目依赖项定义之间的唯一区别在于元数据,它定义了在主项目链接命令行中包含/排除输出程序集。

虽然我们没有删除“项目依赖项”对话框,但我们建议通过“框架和引用”对话框定义新的项目依赖项。对于项目依赖项,需要将属性页UI中的“引用程序集输出”属性设置为false;对于项目引用,需要将其设置为true。

因为我们推荐这种模式,所以到VS2010的转换也就是将在解决方案级别定义的项目依赖信息转换为在项目级别定义的项目引用信息。 在将dependencProject.vcproj添加为MainProject.vcproj的依赖项(通过Project)之后,我们在Orcas解决方案文件中定义了什么 à 项目依赖项…菜单):

MySolution.sln地址:

项目(“{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}”)=“DependencyProject”,“DependencyProject DependencyProject.vcproj”,“AD3B5768-7679-4CEC-B4A7-3AD056B3632C}”

结束项目

Project(“{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}”)=“主项目”,“主项目主项目.vcproj”,“{BA6A25FC-401B-4F6F-BAF0-083708C6502A}”

ProjectSection(ProjectDependencies)=项目后

{AD3B5768-7679-4CEC-B4A7-3AD056B3632C}={AD3B5768-7679-4CEC-B4A7-3AD056B3632C}

结束项目部分

结束项目

在VS2010项目文件中,它如下所示:

主项目.vcxproj:

<项目组>

{ad3b5768-7679-4cec-b4a7-3ad056b3632c}

false

项目名称和GUID是从Orcas解决方案文件获取的信息。ReferenceOutputAssembly元数据用于控制在构建主项目期间,引用项目所指向的程序集是否包含在编译器的命令行中。因为我们转换了一个“依赖关系”(在Orcas中称之为“dependency”)的关系,这意味着只有构建顺序,所以我们将ReferenceOutputAssembly元数据设置为false。

为了演示转换Orcas项目依赖项和Orcas项目引用之间的区别,请考虑下面的示例,该示例是通过项目属性(Framework和References)在Orcas中添加的引用项目。

在奥卡斯项目中,我们将:

主项目.vcproj:

<参考资料>

<项目参考

ReferencedProjectIdentifier=“{C0F77507-0B6F-41AC-A576-2D462FED270E}”

RelativePathToProject=“.ReferenceProjectReferenceProject.vcproj”

/>

在VS2010项目中,我们将转换为:

主项目.vcxproj:

<项目组>

{c0f77507-0b6f-41ac-a576-2d462fed270e}

true

true

上述操作的最终结果是projectdependencProject和ReferenceProject都显示在frameworkandreferences窗口中。在VS2008中,只有ReferenceProject会出现。

图片[1]-使用VS2010更改项目设置-yiteyi-C++库

请注意,如果您需要返回到VS2008进行快速实验,您的项目确实存在此类依赖项,并且您没有为此使用源代码管理,那么使用VS2008版本更改已转换的解决方案标题部分将导致丢失所有P2P信息。

VC目录

我们还用VS2010实现了不同的VC目录。它们不再存在于工具中 à 选项 à 项目和解决方案,但在已加载项目的属性页中。UI背后的数据支持由用户属性表组成,这些属性表通常由任何项目从[LocalAppData]MicrosoftMSBuildv4.0导入。您可以通过自定义要在项目中导入的用户属性表来控制VC目录设置,这样您可以定义每个项目或全局VC目录设置。这再次带来了与msbuild语法的一致性(使用属性表而不是ini文件),在同一台机器上设置多个项目时更灵活(而不是严格的按用户/每台机器的环境),以及在不同机器上登记时更好的源代码管理体验(而不是总是更改特定于机器的设置)。布莱恩·泰勒在这篇文章中透彻地解释了这一变化及其好处 博客文章 .

其他引用搜索路径

与VC目录相关的一个变化是程序集搜索路径(从属性页 à 框架和参考文献 à 附加引用搜索路径)现在是VC目录部分的一部分,位于已加载项目的属性页中。将定义构建环境的所有路径定义在同一位置是有意义的。

图片[2]-使用VS2010更改项目设置-yiteyi-C++库

源代码管理信息

转换为VS2010时发生的另一个设置位置更改是基于MSSCPRJ.scc提示文件的提供程序(如Visual source Safe)的项目源代码管理信息。由于项目文件扩展名更改为.vcxproj,源代码管理提供程序可能无法跟踪此新扩展名并为其创建msscprj.scc提示文件。此更改不适用于解决方案源代码管理信息(因为.sln扩展名保持不变),也不适用于除项目文件以外的任何其他类型的文件。

例如,在VS2008中,如果源代码管理提供程序能够写入msscprj.scc文件并将项目绑定持久化(这是vcproj文件的默认情况),那么msscprj.scc文件将如下所示:

MSSCPRJ.scc编号:

这是一个源代码控制文件

[我的项目.vcproj]

SCCu辅助路径=“ SCC服务器SCCDatabase

SCC项目名称=“$/MyProject.root/MyProject/MyProject”,IQAAAAA

然后,VS2008将能够使用此提供程序生成的文件中的绑定,并且vcproj项目文件将仅包含“SAK”触发器:

MyProject.vcproj项目:

SccProjectName=“SAK”

SccAuxPath=“萨克”

SccLocalPath=“萨克”

SccProvider=“萨克”

默认情况下,VS2010找不到msscprj.scc文件,项目文件将包含以下源代码管理信息:

我的项目.vcxproj:

“$/MyProject.root/MyProject/MyProject”,IQAAAAAA

MSSCCI:Microsoft Visual SourceSafe

SccAuxPath值未迁移到新项目文件中,因为此属性通常存储用户特定的信息。这将迁移到解决方案suo文件中。

请注意,可以在源代码管理提供程序UI中设置已识别的项目扩展名,例如,对于SourceSafe,可以在SourceSafe Explorer/Tools/Options/File Types/CreateSccFiles列表中添加项目扩展名。

图片[3]-使用VS2010更改项目设置-yiteyi-C++库

如果您有任何问题,请告诉我们。

安德烈·伊萨克

软件开发工程师

风险投资项目体系与建设团队

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享