VS 2012 C ++ - 可能不属于同一解决方案的项目到项目引用

时间:2013-05-24 12:37:06

标签: c++ visual-studio-2012 dependencies

注意:仅适用于C ++。

背景:在从VS 2008移植到2012年的大型项目解决方案时,我们面临着将项目引用调整为新VS 2010+风格的挑战。在VS 2008中,您可以创建另一个C ++库模块的链接时引用,并将其作为“项目依赖项”存储在解决方案文件中。在2012年,这些仅影响构建顺序,但为了创建链接时引用,必须通过现在按项目存储的[References ...]添加它。

现在的问题是:因为在VS2010 +项目到项目的引用存储在项目文件而不是解决方案中,如果有人添加了一个项目,引用了另一个解决方案而没有手动添加每个引用项目,这个中断解决方案(但允许你这样做)我们得到臭名昭着的" 项目文件''已重命名或已不在解决方案中 "每次尝试构建时都会出错,甚至不包括项目名称。似乎VS没有为此做好准备。遗憾的是,我们的解决方案中有300多个项目相互依赖,我们还需要将其拆分为更小的部分,以方便许多程序员。

有没有人知道定义C ++库引用的方法,以便在加载它时不会破坏解决方案并且引用的项目不是它的一部分?我知道在这种情况下引用仍然无法工作,我们完全愿意处理它(让创建新解决方案的人手动指定它作为链接器输入)但是得到这个错误消息(不是告诉问题在哪里)是不可接受的,并禁止我们从2008年迁移到2012年。我们希望有一个完整的,巨大的解决方案,自动化MSBuild流程使用它来构建所有东西,但仍然可以选择包含一些项目进入较小的解决方案而不会出现此错误。

我正在研究如何指定令人满意的条件表达式 <ProjectReference Include="..\..\xxx\ProjectName.vcxproj" Condition="..."> - 如果我们只能指定一个表达式,只有当vcxproj是当前加载的解决方案的一部分时才处理这个,所以我们不会触发错误。有没有人有这方面的经验?或者有更好的方法来解决这个问题吗? 在2008年,引用是在.sln而不是.vcproj中指定的,你只需要在任何其他解决方案中重新重做它们。耗费时间和刺激性,但至少你没有得到一个showstopper错误,一旦你包含一个带有依赖项的项目,就不会告诉你罪魁祸首。

感谢您的任何见解。

0 个答案:

没有答案