提交 98bd5992 编写于 作者: T tmat

Remove requirement to list all transitively referenced projects in...

Remove requirement to list all transitively referenced projects in ProjectReferences of each project
上级 6c1584c0
......@@ -102,7 +102,6 @@ private bool CheckProjectReferences(TextWriter textWriter)
var declaredList = declaredEntryList.Select(x => x.ProjectKey).ToList();
allGood &= CheckProjectReferencesComplete(textWriter, declaredList);
allGood &= CheckUnitTestReferenceRestriction(textWriter, declaredList);
allGood &= CheckTransitiveReferences(textWriter, declaredList);
allGood &= CheckNoGuidsOnProjectReferences(textWriter, declaredEntryList);
return allGood;
......@@ -261,63 +260,6 @@ private bool CheckUnitTestReferenceRestriction(TextWriter textWriter, IEnumerabl
return allGood;
}
/// <summary>
/// In order to ensure all dependencies are properly copied on deployment projects, the declared reference
/// set much match the transitive dependency set. When there is a difference it represents dependencies that
/// MSBuild won't deploy on build.
/// </summary>
private bool CheckTransitiveReferences(TextWriter textWriter, IEnumerable<ProjectKey> declaredReferences)
{
if (!_projectUtil.IsDeploymentProject)
{
return true;
}
var list = GetProjectReferencesTransitive(declaredReferences);
var set = new HashSet<ProjectKey>(declaredReferences);
var allGood = true;
foreach (var key in list)
{
if (!set.Contains(key))
{
textWriter.WriteLine($"Missing project reference {key.FileName}");
allGood = false;
}
}
return allGood;
}
private List<ProjectKey> GetProjectReferencesTransitive(IEnumerable<ProjectKey> declaredReferences)
{
var list = new List<ProjectKey>();
var toVisit = new Queue<ProjectKey>(declaredReferences);
var seen = new HashSet<ProjectKey>();
while (toVisit.Count > 0)
{
var current = toVisit.Dequeue();
if (!seen.Add(current))
{
continue;
}
if (!_solutionMap.TryGetValue(current, out var data))
{
continue;
}
list.Add(current);
foreach (var dep in data.ProjectUtil.GetDeclaredProjectReferences())
{
toVisit.Enqueue(dep.ProjectKey);
}
}
list.Sort((x, y) => x.FileName.CompareTo(y.FileName));
return list;
}
private bool CheckTargetFrameworks(TextWriter textWriter)
{
if (!_data.IsUnitTestProject)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册