我目前正在将msbuild用于600多个项目的解决方案。
想象一下,我更改了10个项目使用的1个库的代码。与其提供全部600个项目供msbuild使用,而不是让其编译所有项目并找出依赖项,不如将其提供给msbuild。我想知道是否可以使用一个程序或库来分析所有600个项目的依赖关系,并只允许我编译11个必需的项目。
换句话说,给定要扫描的所有600个项目的输入,而BaseLibrary.csproj作为已被修改参数的项目,仅提供我需要编译为输出的11个项目。
我在编写自定义任务方面经验丰富,如果有的话,我宁愿使用第三方库进行依赖关系分析。
我公司每3-4个月进行一次增量发布。作为一个实验,我编写了一个自定义任务,该任务查看先前发行版的“ Subversion标记”,并评估此后已更改的所有已编译文件,并将它们映射到项目。
我能想到的唯一用例是不起作用的,是我提到的那种情况,其中更改了基础库,而系统也不知道依赖该库的所有项目。
您是否尝试过.NET程序集依赖性分析器?
它是开源的,您可能需要点脚本中的图形输出。该站点的一个示例:
digraph G { size="100,69" center="" ratio=All node[width=.25,hight=.375,fontsize=12,color=lightblue2,style=filled] 1 -> 9; 1 -> 11; 9 -> 10; 11 -> 10; 1 [label="Drew.Controls.Map"]; 9 [label="Drew.Types"]; 10 [label="nunit.framework"]; 11 [label="Drew.Util"]; }
使用项目列表和此脚本输出,您可以创建编译列表。