文件构建执行顺序

时间:2010-04-13 18:39:53

标签: c# file build

我有一个数据结构,如下所示:


 class File
    {
        public string Value { get; set; }
        public File[] Dependencies { get; set; }
        public bool Change { get; private set; }

    public File(string value,File[] dependencies)
    {
        Value = value;
        Dependencies = dependencies;
        Change = false;
    }
}

基本上,这种数据结构遵循典型的文件构建执行。

每个文件都有一个值和一个依赖项列表,它们的类型也是File。每个文件都有一个名为Change的属性,它告诉文件是否被更改。

我集思广益,形成了一个算法,该算法遍历所有这些文件并按顺序构建(即典型的构建过程),但没有更好的算法。

有人可以对此有所了解吗?

非常感谢。

马赫什

2 个答案:

答案 0 :(得分:2)

您正在寻找的算法称为topological sorting

答案 1 :(得分:1)

请遵循以下基本步骤。

  1. 查找没有任何依赖关系的文件
  2. 首先将其添加到构建
  3. 查找依赖于构建中的文件而不是其他文件
  4. 添加那些以构建下一个
  5. 重复3和4,直到构建
  6. 中的所有文件

    您需要进行一些检查以检测循环依赖关系,这将导致步骤5的无限循环。除此之外,这应该可行。