在Visual Studio中卸载项目时,任何引用项目都会在对已卸载项目的引用上获得警告三角形。我自己写了一个宏来做聪明的事情(检测添加/删除项目并将任何引用转换为文件/项目依赖项),但我不能相信我没有错过更简单的东西。如果我必须手动更改引用(并打破'个人解决方案/共享项目'团队开发范例),卸载功能如何可以使用。
(这个问题与this question关于在Visual Studio中构建大型解决方案的答案有关 - 一些答案提到了包含大量项目的解决方案,但“卸载”未使用的项目以提高性能。)
答案 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链接,几周后会自毁)