在Visual Studio中卸载项目时,如何处理引用?

时间:2008-10-07 05:55:29

标签: visual-studio reference projects-and-solutions

在Visual Studio中卸载项目时,任何引用项目都会在对已卸载项目的引用上获得警告三角形。我自己写了一个宏来做聪明的事情(检测添加/删除项目并将任何引用转换为文件/项目依赖项),但我不能相信我没有错过更简单的东西。如果我必须手动更改引用(并打破'个人解决方案/共享项目'团队开发范例),卸载功能如何可以使用。

(这个问题与this question关于在Visual Studio中构建大型解决方案的答案有关 - 一些答案提到了包含大量项目的解决方案,但“卸载”未使用的项目以提高性能。)

4 个答案:

答案 0 :(得分:1)

对于我的项目,我创建了一个assemblies文件夹,项目会自动从其他项目复制的设置位置复制到该文件夹​​中。

引用程序集项目的后期构建:

if not exist "C:\builds\Project1" md "C:\builds\Project1\"
copy "$(TargetDir)$(TargetName).*" "C:\builds\Project1\"

引用项目的预构建:

  

如果存在“c:\ builds \ Project1 \”copy“c:\ builds \ Project1 *。*”“$(ProjectDir)assemblies”

项目文件指向其assemblies子文件夹以获取引用,因此即使从解决方案中卸载源项目,也将使用最后构建的程序集,而不会出现在开发过程中将整个项目放入内存的性能问题

答案 1 :(得分:1)

  

如果使用文件引用,在同一解决方案中拥有项目有什么好处?

如果您的app.exe使用utils.dll而您更改了utils.dll的代码,那么如果它在同一解决方案中,VS会注意到依赖关系并重新编译它们。如果它不在解决方案中,您将不得不跳出来,单独重新编译utils.dll,然后重新编译并重新编译app.exe

这或多或少取决于你的exe引用的其他dll的数量,以及它们改变的频率(在团队环境中,经常根据我的经验共享dll的变化)。
还有一个副作用,如果你在VS中有100个项目,那么处理它们需要很长时间,以确定它们是否需要重新编译。

答案 2 :(得分:1)

卸载项目意味着是一个临时操作,因此您可以将实际项目文件编辑为XML(文本)。如果要从解决方案中完全删除项目,则应使用“删除”菜单选项,该选项将删除对该项目的任何引用。

使用项目引用的一个优点是它允许您轻松调试代码。它还会自动确保您使用正确的配置构建(即,如果您在“调试”模式下构建它将使用程序集的Debug版本)。话虽如此,你放弃了一些关于你将选择的依赖项目的版本/构建的确定性 - 项目引用意味着你总是使用最新版本。

是的,要使Visual Studio确定构建依赖关系,它必须能够查看和构建所有项目,这意味着项目引用。

答案 3 :(得分:1)

我刚刚通过MSDN doc阅读有关构建解决方案和项目的最新消息。

我没有注意到的是,在多项目解决方案中,解决方案资源管理器中的上下文菜单提出了一个Project Dependencies弹出窗口。如果尚未通过项目之间的项目引用来定义项目依赖项,则可以在此处手动定义项目依赖项。

请参阅here(MSDN链接,几周后会自毁)