本文整理汇总了C#中Microsoft.Build.Execution.ProjectInstance.ToDictionary方法的典型用法代码示例。如果您正苦于以下问题:C# ProjectInstance.ToDictionary方法的具体用法?C# ProjectInstance.ToDictionary怎么用?C# ProjectInstance.ToDictionary使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Microsoft.Build.Execution.ProjectInstance
的用法示例。
在下文中一共展示了ProjectInstance.ToDictionary方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: sortByBuildOrder
static ProjectInstance[] sortByBuildOrder(ProjectInstance[] instances)
{
var rootProjects = instances.ToDictionary(getProjectGuid);
var ordered =
rootProjects.Keys.SortTopologicallyReverse(
g1 => getDependentProjectGuids(rootProjects[g1]).Where(rootProjects.ContainsKey));
return ordered.Select(g => rootProjects[g]).ToArray();
}
示例2: projectInstancesOfPaths
static ProjectInstance[] projectInstancesOfPaths(ProjectInstance[] allInstances, IEnumerable<string> paths)
{
var dictByPath = allInstances.ToDictionary(instance => instance.FullPath.ToLowerInvariant());
return paths.Select(path => dictByPath[path.ToLowerInvariant()]).ToArray();
}
示例3: createDependentMap
static Dictionary<Guid, HashSet<Guid>> createDependentMap(ProjectInstance[] allInstances)
{
var allGuids = allInstances.ToDictionary(getProjectGuid);
var dict = new Dictionary<Guid, HashSet<Guid>>();
foreach (var inst in allInstances)
{
var guid = getProjectGuid(inst);
var deps = getDependentProjectGuids(inst).Where(allGuids.ContainsKey).ToArray();
foreach (var dep in deps)
{
HashSet<Guid> dependents = null;
if (!dict.TryGetValue(dep, out dependents))
{
dependents = new HashSet<Guid>();
dict.Add(dep, dependents);
}
dependents.Add(guid);
}
}
return dict;
}
示例4: createDependencyMap
static Dictionary<Guid, Guid[]> createDependencyMap(ProjectInstance[] allInstances)
{
var allGuids = allInstances.ToDictionary(getProjectGuid);
var dict = new Dictionary<Guid, Guid[]>();
foreach (var inst in allInstances)
{
var guid = getProjectGuid(inst);
var deps = getDependentProjectGuids(inst).Where(allGuids.ContainsKey).ToArray();
dict.Add(guid, deps);
}
return dict;
}
示例5: getAffectedProjects
/// Returns all the affected projects of the given list of projects.
/// Since the roots may refer to each other, the roots are included in the result set.
static ProjectInstance[] getAffectedProjects(ProjectInstance[] allInstances, ProjectInstance[] roots)
{
var dependentMap = createDependentMap(allInstances);
var allGuids = allInstances.ToDictionary(getProjectGuid);
var rootGuids = roots.Select(getProjectGuid).ToArray();
var todo = new Queue<Guid>(rootGuids);
var affected = new HashSet<Guid>(rootGuids);
while (todo.Count != 0)
{
var next = todo.Dequeue();
HashSet<Guid> dependents = null;
if (!dependentMap.TryGetValue(next, out dependents))
continue;
dependents.ForEach(dep => {
if (affected.Add(dep))
todo.Enqueue(dep); }
);
}
return affected.Select(g => allGuids[g]).ToArray();
}
示例6: getDependencies
/// Returns all the dependencies of a number of projects.
static ProjectInstance[] getDependencies(ProjectInstance[] allInstances, ProjectInstance[] roots)
{
var allGuids = allInstances.ToDictionary(getProjectGuid);
var todo = new Queue<Guid>(roots.Select(getProjectGuid));
var rootSet = new HashSet<Guid>(roots.Select(getProjectGuid));
var dependencies = new HashSet<Guid>();
while (todo.Count != 0)
{
var next = todo.Dequeue();
getDependentProjectGuids(allGuids[next])
.Where(g => !dependencies.Contains(g) && !rootSet.Contains(g) && allGuids.ContainsKey(g))
.ForEach(g =>
{
todo.Enqueue(g);
dependencies.Add(g);
});
}
return dependencies.Select(g => allGuids[g]).ToArray();
}