Add task to generate the repo to repo graph (#1036)
This commit is contained in:
parent
07e1f194cf
commit
9f7e295af8
|
|
@ -0,0 +1,17 @@
|
||||||
|
<!--
|
||||||
|
The targets in this file should not be executed from a CI build.
|
||||||
|
They are meant to be used by developers to update the ASP.NET Core configuration.
|
||||||
|
-->
|
||||||
|
<Project>
|
||||||
|
|
||||||
|
<!-- Generates a .dgml file representing the repo to repo graph of reach korebuild project -->
|
||||||
|
<Target Name="GenerateSubmoduleGraph" DependsOnTargets="ResolveRepoInfo;GeneratePropsFiles">
|
||||||
|
<RepoTasks.GenerateSubmoduleGraph
|
||||||
|
Solutions="@(Solution)"
|
||||||
|
Artifacts="@(ArtifactInfo)"
|
||||||
|
Repositories="@(Repository)"
|
||||||
|
RepositoryRoot="$(RepositoryRoot)"
|
||||||
|
Properties="Configuration=$(Configuration);BuildNumber=$(BuildNumber);DotNetPackageVersionPropsPath=$(GeneratedPackageVersionPropsPath)" />
|
||||||
|
</Target>
|
||||||
|
|
||||||
|
</Project>
|
||||||
|
|
@ -6,6 +6,7 @@
|
||||||
<Import Project="SharedFx.targets" />
|
<Import Project="SharedFx.targets" />
|
||||||
<Import Project="SharedFxInstaller.targets" />
|
<Import Project="SharedFxInstaller.targets" />
|
||||||
<Import Project="Publish.targets" />
|
<Import Project="Publish.targets" />
|
||||||
|
<Import Project="GenerateCode.targets" />
|
||||||
|
|
||||||
<!-- Workaround for #1014 -->
|
<!-- Workaround for #1014 -->
|
||||||
<Import Project="buildorder.props" Condition="$([MSBuild]::IsOSUnixLike())" />
|
<Import Project="buildorder.props" Condition="$([MSBuild]::IsOSUnixLike())" />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System.Xml.Linq;
|
||||||
|
|
||||||
|
namespace RepoTasks.CodeGen
|
||||||
|
{
|
||||||
|
class DirectedGraphXml
|
||||||
|
{
|
||||||
|
private readonly XNamespace _ns = "http://schemas.microsoft.com/vs/2009/dgml";
|
||||||
|
private readonly XDocument _doc;
|
||||||
|
private readonly XElement _nodes;
|
||||||
|
private readonly XElement _links;
|
||||||
|
|
||||||
|
public DirectedGraphXml()
|
||||||
|
{
|
||||||
|
_doc = new XDocument(new XElement(_ns + "DirectedGraph"));
|
||||||
|
_nodes = new XElement(_ns + "Nodes");
|
||||||
|
_links = new XElement(_ns + "Links");
|
||||||
|
_doc.Root.Add(_nodes);
|
||||||
|
_doc.Root.Add(_links);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddNode(string id)
|
||||||
|
{
|
||||||
|
_nodes.Add(new XElement(_ns + "Node", new XAttribute("Id", id), new XAttribute("Label", id)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddLink(string source, string target)
|
||||||
|
{
|
||||||
|
_links.Add(new XElement(_ns + "Link",
|
||||||
|
new XAttribute("Source", source),
|
||||||
|
new XAttribute("Target", target)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save(string path)
|
||||||
|
{
|
||||||
|
_doc.Save(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,226 @@
|
||||||
|
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading;
|
||||||
|
using Microsoft.Build.Framework;
|
||||||
|
using Microsoft.Build.Utilities;
|
||||||
|
using NuGet.Frameworks;
|
||||||
|
using NuGet.Versioning;
|
||||||
|
using RepoTools.BuildGraph;
|
||||||
|
using RepoTasks.ProjectModel;
|
||||||
|
using RepoTasks.Utilities;
|
||||||
|
using RepoTasks.CodeGen;
|
||||||
|
using NuGet.Packaging.Core;
|
||||||
|
|
||||||
|
namespace RepoTasks
|
||||||
|
{
|
||||||
|
public class GenerateSubmoduleGraph : Task, ICancelableTask
|
||||||
|
{
|
||||||
|
private readonly CancellationTokenSource _cts = new CancellationTokenSource();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Repositories that we are building new versions of.
|
||||||
|
/// </summary>
|
||||||
|
[Required]
|
||||||
|
public ITaskItem[] Solutions { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public ITaskItem[] Artifacts { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public ITaskItem[] Repositories { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string RepositoryRoot { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
public string Properties { get; set; }
|
||||||
|
|
||||||
|
public void Cancel()
|
||||||
|
{
|
||||||
|
_cts.Cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool Execute()
|
||||||
|
{
|
||||||
|
var packageArtifacts = Artifacts.Select(ArtifactInfo.Parse)
|
||||||
|
.OfType<ArtifactInfo.Package>()
|
||||||
|
.Where(p => !p.IsSymbolsArtifact)
|
||||||
|
.ToDictionary(p => p.PackageInfo.Id, p => p, StringComparer.OrdinalIgnoreCase);
|
||||||
|
|
||||||
|
var factory = new SolutionInfoFactory(Log, BuildEngine5);
|
||||||
|
var props = MSBuildListSplitter.GetNamedProperties(Properties);
|
||||||
|
|
||||||
|
Log.LogMessage(MessageImportance.High, $"Beginning cross-repo analysis on {Solutions.Length} solutions. Hang tight...");
|
||||||
|
|
||||||
|
if (!props.TryGetValue("Configuration", out var defaultConfig))
|
||||||
|
{
|
||||||
|
defaultConfig = "Debug";
|
||||||
|
}
|
||||||
|
|
||||||
|
var solutions = factory.Create(Solutions, props, defaultConfig, _cts.Token).OrderBy(f => f.Directory).ToList();
|
||||||
|
Log.LogMessage($"Found {solutions.Count} and {solutions.Sum(p => p.Projects.Count)} projects");
|
||||||
|
|
||||||
|
if (_cts.IsCancellationRequested)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return GenerateGraph(packageArtifacts, solutions);
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool GenerateGraph(IDictionary<string, ArtifactInfo.Package> packageArtifacts, IReadOnlyList<SolutionInfo> solutions)
|
||||||
|
{
|
||||||
|
var repoGraph = new AdjacencyMatrix(solutions.Count);
|
||||||
|
var packageToProjectMap = new Dictionary<PackageIdentity, ProjectInfo>();
|
||||||
|
|
||||||
|
for (var i = 0; i < solutions.Count; i++)
|
||||||
|
{
|
||||||
|
var sln = repoGraph[i] = solutions[i];
|
||||||
|
|
||||||
|
foreach (var proj in sln.Projects)
|
||||||
|
{
|
||||||
|
if (!proj.IsPackable || proj.FullPath.Contains("samples"))
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
var id = new PackageIdentity(proj.PackageId, new NuGetVersion(proj.PackageVersion));
|
||||||
|
|
||||||
|
if (packageToProjectMap.TryGetValue(id, out var otherProj))
|
||||||
|
{
|
||||||
|
Log.LogError($"Both {proj.FullPath} and {otherProj.FullPath} produce {id}");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
packageToProjectMap.Add(id, proj);
|
||||||
|
}
|
||||||
|
|
||||||
|
var sharedSrc = Path.Combine(sln.Directory, "shared");
|
||||||
|
if (Directory.Exists(sharedSrc))
|
||||||
|
{
|
||||||
|
foreach (var dir in Directory.GetDirectories(sharedSrc, "*.Sources"))
|
||||||
|
{
|
||||||
|
var id = Path.GetFileName(dir);
|
||||||
|
var artifactInfo = packageArtifacts[id];
|
||||||
|
var sharedSrcProj = new ProjectInfo(dir,
|
||||||
|
Array.Empty<ProjectFrameworkInfo>(),
|
||||||
|
Array.Empty<DotNetCliReferenceInfo>(),
|
||||||
|
true,
|
||||||
|
artifactInfo.PackageInfo.Id,
|
||||||
|
artifactInfo.PackageInfo.Version.ToNormalizedString());
|
||||||
|
sharedSrcProj.SolutionInfo = sln;
|
||||||
|
var identity = new PackageIdentity(artifactInfo.PackageInfo.Id, artifactInfo.PackageInfo.Version);
|
||||||
|
packageToProjectMap.Add(identity, sharedSrcProj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Log.HasLoggedErrors)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var i = 0; i < solutions.Count; i++)
|
||||||
|
{
|
||||||
|
var sln = repoGraph[i];
|
||||||
|
|
||||||
|
var deps = from proj in sln.Projects
|
||||||
|
from tfm in proj.Frameworks
|
||||||
|
from dep in tfm.Dependencies.Values
|
||||||
|
select dep;
|
||||||
|
|
||||||
|
foreach (var dep in deps)
|
||||||
|
{
|
||||||
|
if (packageToProjectMap.TryGetValue(new PackageIdentity(dep.Id, new NuGetVersion(dep.Version)), out var target))
|
||||||
|
{
|
||||||
|
var j = repoGraph.FindIndex(target.SolutionInfo);
|
||||||
|
repoGraph.SetLink(i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var toolDeps = from proj in sln.Projects
|
||||||
|
from tool in proj.Tools
|
||||||
|
select tool;
|
||||||
|
|
||||||
|
foreach (var toolDep in toolDeps)
|
||||||
|
{
|
||||||
|
if (packageToProjectMap.TryGetValue(new PackageIdentity(toolDep.Id, new NuGetVersion(toolDep.Version)), out var target))
|
||||||
|
{
|
||||||
|
var j = repoGraph.FindIndex(target.SolutionInfo);
|
||||||
|
repoGraph.SetLink(i, j);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
CreateDgml(repoGraph);
|
||||||
|
return !Log.HasLoggedErrors;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void CreateDgml(AdjacencyMatrix repoGraph)
|
||||||
|
{
|
||||||
|
var dgml = new DirectedGraphXml();
|
||||||
|
|
||||||
|
for (var i = 0; i < repoGraph.Count; i++)
|
||||||
|
{
|
||||||
|
var node = repoGraph[i];
|
||||||
|
var nodeName = Path.GetFileName(node.Directory);
|
||||||
|
dgml.AddNode(nodeName);
|
||||||
|
|
||||||
|
for (var j = 0; j < repoGraph.Count; j++)
|
||||||
|
{
|
||||||
|
if (j == i) continue;
|
||||||
|
if (repoGraph.HasLink(i, j))
|
||||||
|
{
|
||||||
|
var target = repoGraph[j];
|
||||||
|
var targetName = Path.GetFileName(target.Directory);
|
||||||
|
dgml.AddLink(nodeName, targetName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dgml.Save(Path.Combine(RepositoryRoot, "modules", "SubmoduleGraph.dgml"));
|
||||||
|
}
|
||||||
|
|
||||||
|
private class AdjacencyMatrix
|
||||||
|
{
|
||||||
|
private readonly bool[,] _matrix;
|
||||||
|
private readonly SolutionInfo[] _items;
|
||||||
|
|
||||||
|
public AdjacencyMatrix(int size)
|
||||||
|
{
|
||||||
|
_matrix = new bool[size, size];
|
||||||
|
_items = new SolutionInfo[size];
|
||||||
|
Count = size;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SolutionInfo this[int idx]
|
||||||
|
{
|
||||||
|
get => _items[idx];
|
||||||
|
set => _items[idx] = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int FindIndex(SolutionInfo item)
|
||||||
|
{
|
||||||
|
return Array.FindIndex(_items, t => t.Equals(item));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int Count { get; }
|
||||||
|
|
||||||
|
public bool HasLink(int source, int target) => _matrix[source, target];
|
||||||
|
|
||||||
|
public void SetLink(int source, int target)
|
||||||
|
{
|
||||||
|
_matrix[source, target] = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
// Copyright (c) .NET Foundation. All rights reserved.
|
||||||
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Text;
|
||||||
|
using Microsoft.Build.Construction;
|
||||||
|
using Microsoft.Build.Evaluation;
|
||||||
|
|
||||||
|
namespace RepoTasks.CodeGen
|
||||||
|
{
|
||||||
|
class RepositoryProject
|
||||||
|
{
|
||||||
|
private readonly ProjectRootElement _doc;
|
||||||
|
|
||||||
|
public RepositoryProject(string repositoryRoot)
|
||||||
|
{
|
||||||
|
_doc = ProjectRootElement.Create(NewProjectFileOptions.None);
|
||||||
|
var import = _doc.CreateImportElement(@"$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props");
|
||||||
|
var propGroup = _doc.AddPropertyGroup();
|
||||||
|
if (repositoryRoot[repositoryRoot.Length - 1] != '\\')
|
||||||
|
{
|
||||||
|
repositoryRoot += '\\';
|
||||||
|
}
|
||||||
|
propGroup.AddProperty("RepositoryRoot", repositoryRoot);
|
||||||
|
_doc.AddItemGroup();
|
||||||
|
_doc.PrependChild(import);
|
||||||
|
_doc.AddImport(@"$(MSBuildToolsPath)\Microsoft.Common.targets");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddProjectReference(string path)
|
||||||
|
{
|
||||||
|
_doc.AddItem("ProjectReference", path);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void AddProperty(string name, string value)
|
||||||
|
{
|
||||||
|
_doc.AddProperty(name, value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Save(string filePath)
|
||||||
|
{
|
||||||
|
_doc.Save(filePath, Encoding.UTF8);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -10,7 +10,6 @@ namespace RepoTasks.ProjectModel
|
||||||
internal class ProjectInfo
|
internal class ProjectInfo
|
||||||
{
|
{
|
||||||
public ProjectInfo(string fullPath,
|
public ProjectInfo(string fullPath,
|
||||||
string projectExtensionsPath,
|
|
||||||
IReadOnlyList<ProjectFrameworkInfo> frameworks,
|
IReadOnlyList<ProjectFrameworkInfo> frameworks,
|
||||||
IReadOnlyList<DotNetCliReferenceInfo> tools,
|
IReadOnlyList<DotNetCliReferenceInfo> tools,
|
||||||
bool isPackable,
|
bool isPackable,
|
||||||
|
|
@ -28,7 +27,6 @@ namespace RepoTasks.ProjectModel
|
||||||
FullPath = fullPath;
|
FullPath = fullPath;
|
||||||
FileName = Path.GetFileName(fullPath);
|
FileName = Path.GetFileName(fullPath);
|
||||||
Directory = Path.GetDirectoryName(FullPath);
|
Directory = Path.GetDirectoryName(FullPath);
|
||||||
ProjectExtensionsPath = projectExtensionsPath ?? Path.Combine(Directory, "obj");
|
|
||||||
IsPackable = isPackable;
|
IsPackable = isPackable;
|
||||||
PackageId = packageId;
|
PackageId = packageId;
|
||||||
PackageVersion = packageVersion;
|
PackageVersion = packageVersion;
|
||||||
|
|
@ -36,12 +34,13 @@ namespace RepoTasks.ProjectModel
|
||||||
|
|
||||||
public string FullPath { get; }
|
public string FullPath { get; }
|
||||||
public string FileName { get; }
|
public string FileName { get; }
|
||||||
public string ProjectExtensionsPath { get; }
|
|
||||||
public string Directory { get; }
|
public string Directory { get; }
|
||||||
public string PackageId { get; }
|
public string PackageId { get; }
|
||||||
public string PackageVersion { get; }
|
public string PackageVersion { get; }
|
||||||
public bool IsPackable { get; }
|
public bool IsPackable { get; }
|
||||||
|
|
||||||
|
public SolutionInfo SolutionInfo { get; set; }
|
||||||
|
|
||||||
public IReadOnlyList<ProjectFrameworkInfo> Frameworks { get; }
|
public IReadOnlyList<ProjectFrameworkInfo> Frameworks { get; }
|
||||||
public IReadOnlyList<DotNetCliReferenceInfo> Tools { get; }
|
public IReadOnlyList<DotNetCliReferenceInfo> Tools { get; }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,6 @@ namespace RepoTasks.ProjectModel
|
||||||
{
|
{
|
||||||
var project = GetProject(path, projectCollection);
|
var project = GetProject(path, projectCollection);
|
||||||
var instance = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup);
|
var instance = project.CreateProjectInstance(ProjectInstanceSettings.ImmutableWithFastItemLookup);
|
||||||
var projExtPath = instance.GetPropertyValue("MSBuildProjectExtensionsPath");
|
|
||||||
|
|
||||||
var targetFrameworks = instance.GetPropertyValue("TargetFrameworks");
|
var targetFrameworks = instance.GetPropertyValue("TargetFrameworks");
|
||||||
var targetFramework = instance.GetPropertyValue("TargetFramework");
|
var targetFramework = instance.GetPropertyValue("TargetFramework");
|
||||||
|
|
@ -63,7 +62,6 @@ namespace RepoTasks.ProjectModel
|
||||||
var packageVersion = instance.GetPropertyValue("PackageVersion");
|
var packageVersion = instance.GetPropertyValue("PackageVersion");
|
||||||
|
|
||||||
return new ProjectInfo(path,
|
return new ProjectInfo(path,
|
||||||
projExtPath,
|
|
||||||
frameworks,
|
frameworks,
|
||||||
tools,
|
tools,
|
||||||
isPackable,
|
isPackable,
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
|
||||||
namespace RepoTasks.ProjectModel
|
namespace RepoTasks.ProjectModel
|
||||||
{
|
{
|
||||||
|
|
@ -21,13 +22,20 @@ namespace RepoTasks.ProjectModel
|
||||||
}
|
}
|
||||||
|
|
||||||
FullPath = fullPath;
|
FullPath = fullPath;
|
||||||
|
Directory = Path.GetDirectoryName(fullPath);
|
||||||
ConfigName = configName;
|
ConfigName = configName;
|
||||||
Projects = projects ?? throw new ArgumentNullException(nameof(projects));
|
Projects = projects ?? throw new ArgumentNullException(nameof(projects));
|
||||||
ShouldBuild = shouldBuild;
|
ShouldBuild = shouldBuild;
|
||||||
Shipped = shipped;
|
Shipped = shipped;
|
||||||
|
|
||||||
|
foreach (var proj in Projects)
|
||||||
|
{
|
||||||
|
proj.SolutionInfo = this;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public string FullPath { get; }
|
public string FullPath { get; }
|
||||||
|
public string Directory { get; }
|
||||||
public string ConfigName { get; }
|
public string ConfigName { get; }
|
||||||
public IReadOnlyList<ProjectInfo> Projects { get; }
|
public IReadOnlyList<ProjectInfo> Projects { get; }
|
||||||
public bool ShouldBuild { get; }
|
public bool ShouldBuild { get; }
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
<Import Project="..\sources.props" />
|
<Import Project="..\sources.props" />
|
||||||
|
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
<TargetFramework>netcoreapp2.0</TargetFramework>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
<UsingTask TaskName="RepoTasks.CheckExpectedPackagesExist" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.CheckExpectedPackagesExist" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.CreateLzma" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.CreateLzma" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.GenerateRestoreSourcesPropsFile" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
|
<UsingTask TaskName="RepoTasks.GenerateSubmoduleGraph" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.JoinItems" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.OrderBy" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
|
<UsingTask TaskName="RepoTasks.ProcessSharedFrameworkDeps" AssemblyFile="$(_RepoTaskAssembly)" />
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26124.0
|
||||||
|
MinimumVisualStudioVersion = 15.0.26124.0
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RepoTasks", "RepoTasks.csproj", "{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Debug|x64 = Debug|x64
|
||||||
|
Debug|x86 = Debug|x86
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
Release|x64 = Release|x64
|
||||||
|
Release|x86 = Release|x86
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x64.Build.0 = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Debug|x86.Build.0 = Debug|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x64.ActiveCfg = Release|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x64.Build.0 = Release|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x86.ActiveCfg = Release|Any CPU
|
||||||
|
{A114791F-35B7-4E5B-8E5B-9A91E0B6E4AE}.Release|x86.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit 6baf0d2715a825c49e7f91189c7ae9ffcb2b4a18
|
Subproject commit 6558238ab8c2add9b75b8022d1445ed20c71c7a1
|
||||||
|
|
@ -0,0 +1,421 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<DirectedGraph xmlns="http://schemas.microsoft.com/vs/2009/dgml">
|
||||||
|
<Nodes>
|
||||||
|
<Node Id="AADIntegration" Label="AADIntegration" />
|
||||||
|
<Node Id="Antiforgery" Label="Antiforgery" />
|
||||||
|
<Node Id="AuthSamples" Label="AuthSamples" />
|
||||||
|
<Node Id="AzureIntegration" Label="AzureIntegration" />
|
||||||
|
<Node Id="BasicMiddleware" Label="BasicMiddleware" />
|
||||||
|
<Node Id="BrowserLink" Label="BrowserLink" />
|
||||||
|
<Node Id="Caching" Label="Caching" />
|
||||||
|
<Node Id="Common" Label="Common" />
|
||||||
|
<Node Id="Configuration" Label="Configuration" />
|
||||||
|
<Node Id="CORS" Label="CORS" />
|
||||||
|
<Node Id="DataProtection" Label="DataProtection" />
|
||||||
|
<Node Id="DependencyInjection" Label="DependencyInjection" />
|
||||||
|
<Node Id="Diagnostics" Label="Diagnostics" />
|
||||||
|
<Node Id="DotNetTools" Label="DotNetTools" />
|
||||||
|
<Node Id="EntityFrameworkCore" Label="EntityFrameworkCore" />
|
||||||
|
<Node Id="EventNotification" Label="EventNotification" />
|
||||||
|
<Node Id="FileSystem" Label="FileSystem" />
|
||||||
|
<Node Id="Hosting" Label="Hosting" />
|
||||||
|
<Node Id="HtmlAbstractions" Label="HtmlAbstractions" />
|
||||||
|
<Node Id="HttpAbstractions" Label="HttpAbstractions" />
|
||||||
|
<Node Id="HttpClientFactory" Label="HttpClientFactory" />
|
||||||
|
<Node Id="HttpSysServer" Label="HttpSysServer" />
|
||||||
|
<Node Id="Identity" Label="Identity" />
|
||||||
|
<Node Id="IISIntegration" Label="IISIntegration" />
|
||||||
|
<Node Id="JavaScriptServices" Label="JavaScriptServices" />
|
||||||
|
<Node Id="JsonPatch" Label="JsonPatch" />
|
||||||
|
<Node Id="KestrelHttpServer" Label="KestrelHttpServer" />
|
||||||
|
<Node Id="Localization" Label="Localization" />
|
||||||
|
<Node Id="Logging" Label="Logging" />
|
||||||
|
<Node Id="MetaPackages" Label="MetaPackages" />
|
||||||
|
<Node Id="Microsoft.Data.Sqlite" Label="Microsoft.Data.Sqlite" />
|
||||||
|
<Node Id="MusicStore" Label="MusicStore" />
|
||||||
|
<Node Id="Mvc" Label="Mvc" />
|
||||||
|
<Node Id="MvcPrecompilation" Label="MvcPrecompilation" />
|
||||||
|
<Node Id="Options" Label="Options" />
|
||||||
|
<Node Id="Proxy" Label="Proxy" />
|
||||||
|
<Node Id="Razor" Label="Razor" />
|
||||||
|
<Node Id="ResponseCaching" Label="ResponseCaching" />
|
||||||
|
<Node Id="Routing" Label="Routing" />
|
||||||
|
<Node Id="Scaffolding" Label="Scaffolding" />
|
||||||
|
<Node Id="Security" Label="Security" />
|
||||||
|
<Node Id="ServerTests" Label="ServerTests" />
|
||||||
|
<Node Id="Session" Label="Session" />
|
||||||
|
<Node Id="SignalR" Label="SignalR" />
|
||||||
|
<Node Id="StaticFiles" Label="StaticFiles" />
|
||||||
|
<Node Id="Testing" Label="Testing" />
|
||||||
|
<Node Id="WebHooks" Label="WebHooks" />
|
||||||
|
<Node Id="WebSockets" Label="WebSockets" />
|
||||||
|
</Nodes>
|
||||||
|
<Links>
|
||||||
|
<Link Source="AADIntegration" Target="BasicMiddleware" />
|
||||||
|
<Link Source="AADIntegration" Target="Configuration" />
|
||||||
|
<Link Source="AADIntegration" Target="IISIntegration" />
|
||||||
|
<Link Source="AADIntegration" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="AADIntegration" Target="Logging" />
|
||||||
|
<Link Source="AADIntegration" Target="Mvc" />
|
||||||
|
<Link Source="AADIntegration" Target="Security" />
|
||||||
|
<Link Source="AADIntegration" Target="StaticFiles" />
|
||||||
|
<Link Source="Antiforgery" Target="Common" />
|
||||||
|
<Link Source="Antiforgery" Target="DataProtection" />
|
||||||
|
<Link Source="Antiforgery" Target="DependencyInjection" />
|
||||||
|
<Link Source="Antiforgery" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="Antiforgery" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Antiforgery" Target="Logging" />
|
||||||
|
<Link Source="Antiforgery" Target="Testing" />
|
||||||
|
<Link Source="AuthSamples" Target="Configuration" />
|
||||||
|
<Link Source="AuthSamples" Target="DataProtection" />
|
||||||
|
<Link Source="AuthSamples" Target="Diagnostics" />
|
||||||
|
<Link Source="AuthSamples" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="AuthSamples" Target="Hosting" />
|
||||||
|
<Link Source="AuthSamples" Target="Identity" />
|
||||||
|
<Link Source="AuthSamples" Target="IISIntegration" />
|
||||||
|
<Link Source="AuthSamples" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="AuthSamples" Target="Logging" />
|
||||||
|
<Link Source="AuthSamples" Target="MetaPackages" />
|
||||||
|
<Link Source="AuthSamples" Target="Mvc" />
|
||||||
|
<Link Source="AuthSamples" Target="Security" />
|
||||||
|
<Link Source="AuthSamples" Target="StaticFiles" />
|
||||||
|
<Link Source="AuthSamples" Target="Testing" />
|
||||||
|
<Link Source="AzureIntegration" Target="Common" />
|
||||||
|
<Link Source="AzureIntegration" Target="Configuration" />
|
||||||
|
<Link Source="AzureIntegration" Target="EventNotification" />
|
||||||
|
<Link Source="AzureIntegration" Target="Hosting" />
|
||||||
|
<Link Source="AzureIntegration" Target="IISIntegration" />
|
||||||
|
<Link Source="AzureIntegration" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="AzureIntegration" Target="Logging" />
|
||||||
|
<Link Source="AzureIntegration" Target="Mvc" />
|
||||||
|
<Link Source="AzureIntegration" Target="Razor" />
|
||||||
|
<Link Source="BasicMiddleware" Target="Configuration" />
|
||||||
|
<Link Source="BasicMiddleware" Target="FileSystem" />
|
||||||
|
<Link Source="BasicMiddleware" Target="Hosting" />
|
||||||
|
<Link Source="BasicMiddleware" Target="HttpAbstractions" />
|
||||||
|
<Link Source="BasicMiddleware" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="BasicMiddleware" Target="Logging" />
|
||||||
|
<Link Source="BasicMiddleware" Target="Options" />
|
||||||
|
<Link Source="BrowserLink" Target="FileSystem" />
|
||||||
|
<Link Source="BrowserLink" Target="Hosting" />
|
||||||
|
<Link Source="BrowserLink" Target="HttpAbstractions" />
|
||||||
|
<Link Source="BrowserLink" Target="Testing" />
|
||||||
|
<Link Source="Caching" Target="Common" />
|
||||||
|
<Link Source="Caching" Target="Configuration" />
|
||||||
|
<Link Source="Caching" Target="DependencyInjection" />
|
||||||
|
<Link Source="Caching" Target="FileSystem" />
|
||||||
|
<Link Source="Caching" Target="Options" />
|
||||||
|
<Link Source="Caching" Target="Testing" />
|
||||||
|
<Link Source="Configuration" Target="Common" />
|
||||||
|
<Link Source="Configuration" Target="FileSystem" />
|
||||||
|
<Link Source="Configuration" Target="Testing" />
|
||||||
|
<Link Source="CORS" Target="Configuration" />
|
||||||
|
<Link Source="CORS" Target="DependencyInjection" />
|
||||||
|
<Link Source="CORS" Target="Hosting" />
|
||||||
|
<Link Source="CORS" Target="HttpAbstractions" />
|
||||||
|
<Link Source="CORS" Target="IISIntegration" />
|
||||||
|
<Link Source="CORS" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="CORS" Target="Logging" />
|
||||||
|
<Link Source="CORS" Target="Options" />
|
||||||
|
<Link Source="DataProtection" Target="Common" />
|
||||||
|
<Link Source="DataProtection" Target="Configuration" />
|
||||||
|
<Link Source="DataProtection" Target="DependencyInjection" />
|
||||||
|
<Link Source="DataProtection" Target="Hosting" />
|
||||||
|
<Link Source="DataProtection" Target="Logging" />
|
||||||
|
<Link Source="DataProtection" Target="Options" />
|
||||||
|
<Link Source="DataProtection" Target="Testing" />
|
||||||
|
<Link Source="DependencyInjection" Target="Common" />
|
||||||
|
<Link Source="DependencyInjection" Target="Testing" />
|
||||||
|
<Link Source="Diagnostics" Target="Common" />
|
||||||
|
<Link Source="Diagnostics" Target="DependencyInjection" />
|
||||||
|
<Link Source="Diagnostics" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="Diagnostics" Target="EventNotification" />
|
||||||
|
<Link Source="Diagnostics" Target="FileSystem" />
|
||||||
|
<Link Source="Diagnostics" Target="Hosting" />
|
||||||
|
<Link Source="Diagnostics" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Diagnostics" Target="IISIntegration" />
|
||||||
|
<Link Source="Diagnostics" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Diagnostics" Target="Logging" />
|
||||||
|
<Link Source="Diagnostics" Target="Options" />
|
||||||
|
<Link Source="Diagnostics" Target="StaticFiles" />
|
||||||
|
<Link Source="Diagnostics" Target="Testing" />
|
||||||
|
<Link Source="DotNetTools" Target="Common" />
|
||||||
|
<Link Source="DotNetTools" Target="Configuration" />
|
||||||
|
<Link Source="DotNetTools" Target="Testing" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="Caching" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="Configuration" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="DependencyInjection" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="Hosting" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="Logging" />
|
||||||
|
<Link Source="EntityFrameworkCore" Target="Microsoft.Data.Sqlite" />
|
||||||
|
<Link Source="EventNotification" Target="Testing" />
|
||||||
|
<Link Source="FileSystem" Target="Common" />
|
||||||
|
<Link Source="FileSystem" Target="Testing" />
|
||||||
|
<Link Source="Hosting" Target="Common" />
|
||||||
|
<Link Source="Hosting" Target="Configuration" />
|
||||||
|
<Link Source="Hosting" Target="DependencyInjection" />
|
||||||
|
<Link Source="Hosting" Target="EventNotification" />
|
||||||
|
<Link Source="Hosting" Target="FileSystem" />
|
||||||
|
<Link Source="Hosting" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Hosting" Target="Logging" />
|
||||||
|
<Link Source="Hosting" Target="Options" />
|
||||||
|
<Link Source="Hosting" Target="Testing" />
|
||||||
|
<Link Source="HtmlAbstractions" Target="DependencyInjection" />
|
||||||
|
<Link Source="HtmlAbstractions" Target="Options" />
|
||||||
|
<Link Source="HtmlAbstractions" Target="Testing" />
|
||||||
|
<Link Source="HttpAbstractions" Target="Common" />
|
||||||
|
<Link Source="HttpAbstractions" Target="DependencyInjection" />
|
||||||
|
<Link Source="HttpAbstractions" Target="FileSystem" />
|
||||||
|
<Link Source="HttpAbstractions" Target="Logging" />
|
||||||
|
<Link Source="HttpAbstractions" Target="Options" />
|
||||||
|
<Link Source="HttpAbstractions" Target="Testing" />
|
||||||
|
<Link Source="HttpClientFactory" Target="Common" />
|
||||||
|
<Link Source="HttpClientFactory" Target="DependencyInjection" />
|
||||||
|
<Link Source="HttpClientFactory" Target="Logging" />
|
||||||
|
<Link Source="HttpClientFactory" Target="Options" />
|
||||||
|
<Link Source="HttpClientFactory" Target="Testing" />
|
||||||
|
<Link Source="HttpSysServer" Target="Hosting" />
|
||||||
|
<Link Source="HttpSysServer" Target="HttpAbstractions" />
|
||||||
|
<Link Source="HttpSysServer" Target="Logging" />
|
||||||
|
<Link Source="HttpSysServer" Target="Testing" />
|
||||||
|
<Link Source="Identity" Target="BasicMiddleware" />
|
||||||
|
<Link Source="Identity" Target="Common" />
|
||||||
|
<Link Source="Identity" Target="Configuration" />
|
||||||
|
<Link Source="Identity" Target="DataProtection" />
|
||||||
|
<Link Source="Identity" Target="DependencyInjection" />
|
||||||
|
<Link Source="Identity" Target="Diagnostics" />
|
||||||
|
<Link Source="Identity" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="Identity" Target="FileSystem" />
|
||||||
|
<Link Source="Identity" Target="Hosting" />
|
||||||
|
<Link Source="Identity" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Identity" Target="IISIntegration" />
|
||||||
|
<Link Source="Identity" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Identity" Target="Logging" />
|
||||||
|
<Link Source="Identity" Target="Mvc" />
|
||||||
|
<Link Source="Identity" Target="Options" />
|
||||||
|
<Link Source="Identity" Target="Razor" />
|
||||||
|
<Link Source="Identity" Target="Security" />
|
||||||
|
<Link Source="Identity" Target="StaticFiles" />
|
||||||
|
<Link Source="Identity" Target="Testing" />
|
||||||
|
<Link Source="IISIntegration" Target="BasicMiddleware" />
|
||||||
|
<Link Source="IISIntegration" Target="Common" />
|
||||||
|
<Link Source="IISIntegration" Target="Configuration" />
|
||||||
|
<Link Source="IISIntegration" Target="Hosting" />
|
||||||
|
<Link Source="IISIntegration" Target="HttpAbstractions" />
|
||||||
|
<Link Source="IISIntegration" Target="HttpSysServer" />
|
||||||
|
<Link Source="IISIntegration" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="IISIntegration" Target="Logging" />
|
||||||
|
<Link Source="IISIntegration" Target="Options" />
|
||||||
|
<Link Source="JavaScriptServices" Target="DependencyInjection" />
|
||||||
|
<Link Source="JavaScriptServices" Target="Diagnostics" />
|
||||||
|
<Link Source="JavaScriptServices" Target="FileSystem" />
|
||||||
|
<Link Source="JavaScriptServices" Target="Hosting" />
|
||||||
|
<Link Source="JavaScriptServices" Target="IISIntegration" />
|
||||||
|
<Link Source="JavaScriptServices" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="JavaScriptServices" Target="Logging" />
|
||||||
|
<Link Source="JavaScriptServices" Target="Mvc" />
|
||||||
|
<Link Source="JavaScriptServices" Target="StaticFiles" />
|
||||||
|
<Link Source="JavaScriptServices" Target="WebSockets" />
|
||||||
|
<Link Source="JsonPatch" Target="Common" />
|
||||||
|
<Link Source="JsonPatch" Target="Testing" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Common" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Configuration" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="DependencyInjection" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Hosting" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="HttpAbstractions" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Logging" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Options" />
|
||||||
|
<Link Source="KestrelHttpServer" Target="Testing" />
|
||||||
|
<Link Source="Localization" Target="Configuration" />
|
||||||
|
<Link Source="Localization" Target="DependencyInjection" />
|
||||||
|
<Link Source="Localization" Target="Hosting" />
|
||||||
|
<Link Source="Localization" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Localization" Target="IISIntegration" />
|
||||||
|
<Link Source="Localization" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Localization" Target="Logging" />
|
||||||
|
<Link Source="Localization" Target="Options" />
|
||||||
|
<Link Source="Localization" Target="Routing" />
|
||||||
|
<Link Source="Localization" Target="Testing" />
|
||||||
|
<Link Source="Logging" Target="Configuration" />
|
||||||
|
<Link Source="Logging" Target="DependencyInjection" />
|
||||||
|
<Link Source="Logging" Target="FileSystem" />
|
||||||
|
<Link Source="Logging" Target="Options" />
|
||||||
|
<Link Source="Logging" Target="Testing" />
|
||||||
|
<Link Source="MetaPackages" Target="BasicMiddleware" />
|
||||||
|
<Link Source="MetaPackages" Target="Configuration" />
|
||||||
|
<Link Source="MetaPackages" Target="Diagnostics" />
|
||||||
|
<Link Source="MetaPackages" Target="Hosting" />
|
||||||
|
<Link Source="MetaPackages" Target="IISIntegration" />
|
||||||
|
<Link Source="MetaPackages" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="MetaPackages" Target="Logging" />
|
||||||
|
<Link Source="MetaPackages" Target="Routing" />
|
||||||
|
<Link Source="MetaPackages" Target="StaticFiles" />
|
||||||
|
<Link Source="MusicStore" Target="Common" />
|
||||||
|
<Link Source="MusicStore" Target="Configuration" />
|
||||||
|
<Link Source="MusicStore" Target="Diagnostics" />
|
||||||
|
<Link Source="MusicStore" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="MusicStore" Target="Hosting" />
|
||||||
|
<Link Source="MusicStore" Target="HttpAbstractions" />
|
||||||
|
<Link Source="MusicStore" Target="HttpSysServer" />
|
||||||
|
<Link Source="MusicStore" Target="Identity" />
|
||||||
|
<Link Source="MusicStore" Target="Logging" />
|
||||||
|
<Link Source="MusicStore" Target="MetaPackages" />
|
||||||
|
<Link Source="MusicStore" Target="Mvc" />
|
||||||
|
<Link Source="MusicStore" Target="MvcPrecompilation" />
|
||||||
|
<Link Source="MusicStore" Target="Security" />
|
||||||
|
<Link Source="MusicStore" Target="Session" />
|
||||||
|
<Link Source="MusicStore" Target="StaticFiles" />
|
||||||
|
<Link Source="Mvc" Target="Antiforgery" />
|
||||||
|
<Link Source="Mvc" Target="Caching" />
|
||||||
|
<Link Source="Mvc" Target="Common" />
|
||||||
|
<Link Source="Mvc" Target="Configuration" />
|
||||||
|
<Link Source="Mvc" Target="CORS" />
|
||||||
|
<Link Source="Mvc" Target="DependencyInjection" />
|
||||||
|
<Link Source="Mvc" Target="Diagnostics" />
|
||||||
|
<Link Source="Mvc" Target="EventNotification" />
|
||||||
|
<Link Source="Mvc" Target="FileSystem" />
|
||||||
|
<Link Source="Mvc" Target="Hosting" />
|
||||||
|
<Link Source="Mvc" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="Mvc" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Mvc" Target="IISIntegration" />
|
||||||
|
<Link Source="Mvc" Target="JsonPatch" />
|
||||||
|
<Link Source="Mvc" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Mvc" Target="Localization" />
|
||||||
|
<Link Source="Mvc" Target="Logging" />
|
||||||
|
<Link Source="Mvc" Target="Options" />
|
||||||
|
<Link Source="Mvc" Target="Razor" />
|
||||||
|
<Link Source="Mvc" Target="ResponseCaching" />
|
||||||
|
<Link Source="Mvc" Target="Routing" />
|
||||||
|
<Link Source="Mvc" Target="Security" />
|
||||||
|
<Link Source="Mvc" Target="Session" />
|
||||||
|
<Link Source="Mvc" Target="StaticFiles" />
|
||||||
|
<Link Source="Mvc" Target="Testing" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Common" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Configuration" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Hosting" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Logging" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Mvc" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Razor" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Security" />
|
||||||
|
<Link Source="MvcPrecompilation" Target="Testing" />
|
||||||
|
<Link Source="Options" Target="Common" />
|
||||||
|
<Link Source="Options" Target="Configuration" />
|
||||||
|
<Link Source="Options" Target="DependencyInjection" />
|
||||||
|
<Link Source="Proxy" Target="Hosting" />
|
||||||
|
<Link Source="Proxy" Target="IISIntegration" />
|
||||||
|
<Link Source="Proxy" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Proxy" Target="Options" />
|
||||||
|
<Link Source="Proxy" Target="Testing" />
|
||||||
|
<Link Source="Proxy" Target="WebSockets" />
|
||||||
|
<Link Source="Razor" Target="Common" />
|
||||||
|
<Link Source="Razor" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="Razor" Target="Testing" />
|
||||||
|
<Link Source="ResponseCaching" Target="Caching" />
|
||||||
|
<Link Source="ResponseCaching" Target="Common" />
|
||||||
|
<Link Source="ResponseCaching" Target="Hosting" />
|
||||||
|
<Link Source="ResponseCaching" Target="HttpAbstractions" />
|
||||||
|
<Link Source="ResponseCaching" Target="IISIntegration" />
|
||||||
|
<Link Source="ResponseCaching" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="ResponseCaching" Target="Logging" />
|
||||||
|
<Link Source="Routing" Target="Common" />
|
||||||
|
<Link Source="Routing" Target="DependencyInjection" />
|
||||||
|
<Link Source="Routing" Target="Hosting" />
|
||||||
|
<Link Source="Routing" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="Routing" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Routing" Target="IISIntegration" />
|
||||||
|
<Link Source="Routing" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Routing" Target="Logging" />
|
||||||
|
<Link Source="Routing" Target="Options" />
|
||||||
|
<Link Source="Routing" Target="Testing" />
|
||||||
|
<Link Source="Scaffolding" Target="Common" />
|
||||||
|
<Link Source="Scaffolding" Target="Configuration" />
|
||||||
|
<Link Source="Scaffolding" Target="DependencyInjection" />
|
||||||
|
<Link Source="Scaffolding" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="Scaffolding" Target="FileSystem" />
|
||||||
|
<Link Source="Scaffolding" Target="Hosting" />
|
||||||
|
<Link Source="Scaffolding" Target="IISIntegration" />
|
||||||
|
<Link Source="Scaffolding" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Scaffolding" Target="Logging" />
|
||||||
|
<Link Source="Scaffolding" Target="Mvc" />
|
||||||
|
<Link Source="Scaffolding" Target="Razor" />
|
||||||
|
<Link Source="Scaffolding" Target="StaticFiles" />
|
||||||
|
<Link Source="Scaffolding" Target="Testing" />
|
||||||
|
<Link Source="Security" Target="Caching" />
|
||||||
|
<Link Source="Security" Target="Common" />
|
||||||
|
<Link Source="Security" Target="Configuration" />
|
||||||
|
<Link Source="Security" Target="DataProtection" />
|
||||||
|
<Link Source="Security" Target="DependencyInjection" />
|
||||||
|
<Link Source="Security" Target="Diagnostics" />
|
||||||
|
<Link Source="Security" Target="FileSystem" />
|
||||||
|
<Link Source="Security" Target="Hosting" />
|
||||||
|
<Link Source="Security" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="Security" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Security" Target="IISIntegration" />
|
||||||
|
<Link Source="Security" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Security" Target="Logging" />
|
||||||
|
<Link Source="Security" Target="Options" />
|
||||||
|
<Link Source="Security" Target="StaticFiles" />
|
||||||
|
<Link Source="Security" Target="Testing" />
|
||||||
|
<Link Source="ServerTests" Target="BasicMiddleware" />
|
||||||
|
<Link Source="ServerTests" Target="Configuration" />
|
||||||
|
<Link Source="ServerTests" Target="Hosting" />
|
||||||
|
<Link Source="ServerTests" Target="HttpAbstractions" />
|
||||||
|
<Link Source="ServerTests" Target="HttpSysServer" />
|
||||||
|
<Link Source="ServerTests" Target="IISIntegration" />
|
||||||
|
<Link Source="ServerTests" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="ServerTests" Target="Logging" />
|
||||||
|
<Link Source="Session" Target="Caching" />
|
||||||
|
<Link Source="Session" Target="DataProtection" />
|
||||||
|
<Link Source="Session" Target="Hosting" />
|
||||||
|
<Link Source="Session" Target="HttpAbstractions" />
|
||||||
|
<Link Source="Session" Target="IISIntegration" />
|
||||||
|
<Link Source="Session" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="Session" Target="Logging" />
|
||||||
|
<Link Source="Session" Target="Options" />
|
||||||
|
<Link Source="SignalR" Target="Common" />
|
||||||
|
<Link Source="SignalR" Target="Configuration" />
|
||||||
|
<Link Source="SignalR" Target="CORS" />
|
||||||
|
<Link Source="SignalR" Target="DependencyInjection" />
|
||||||
|
<Link Source="SignalR" Target="Diagnostics" />
|
||||||
|
<Link Source="SignalR" Target="EntityFrameworkCore" />
|
||||||
|
<Link Source="SignalR" Target="Hosting" />
|
||||||
|
<Link Source="SignalR" Target="HttpAbstractions" />
|
||||||
|
<Link Source="SignalR" Target="Identity" />
|
||||||
|
<Link Source="SignalR" Target="IISIntegration" />
|
||||||
|
<Link Source="SignalR" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="SignalR" Target="Logging" />
|
||||||
|
<Link Source="SignalR" Target="Mvc" />
|
||||||
|
<Link Source="SignalR" Target="Options" />
|
||||||
|
<Link Source="SignalR" Target="Routing" />
|
||||||
|
<Link Source="SignalR" Target="Security" />
|
||||||
|
<Link Source="SignalR" Target="StaticFiles" />
|
||||||
|
<Link Source="SignalR" Target="Testing" />
|
||||||
|
<Link Source="SignalR" Target="WebSockets" />
|
||||||
|
<Link Source="StaticFiles" Target="FileSystem" />
|
||||||
|
<Link Source="StaticFiles" Target="Hosting" />
|
||||||
|
<Link Source="StaticFiles" Target="HtmlAbstractions" />
|
||||||
|
<Link Source="StaticFiles" Target="HttpAbstractions" />
|
||||||
|
<Link Source="StaticFiles" Target="HttpSysServer" />
|
||||||
|
<Link Source="StaticFiles" Target="IISIntegration" />
|
||||||
|
<Link Source="StaticFiles" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="StaticFiles" Target="Logging" />
|
||||||
|
<Link Source="StaticFiles" Target="Testing" />
|
||||||
|
<Link Source="WebHooks" Target="Common" />
|
||||||
|
<Link Source="WebHooks" Target="Configuration" />
|
||||||
|
<Link Source="WebHooks" Target="MetaPackages" />
|
||||||
|
<Link Source="WebHooks" Target="Mvc" />
|
||||||
|
<Link Source="WebHooks" Target="StaticFiles" />
|
||||||
|
<Link Source="WebSockets" Target="Configuration" />
|
||||||
|
<Link Source="WebSockets" Target="Diagnostics" />
|
||||||
|
<Link Source="WebSockets" Target="Hosting" />
|
||||||
|
<Link Source="WebSockets" Target="HttpAbstractions" />
|
||||||
|
<Link Source="WebSockets" Target="HttpSysServer" />
|
||||||
|
<Link Source="WebSockets" Target="IISIntegration" />
|
||||||
|
<Link Source="WebSockets" Target="KestrelHttpServer" />
|
||||||
|
<Link Source="WebSockets" Target="Logging" />
|
||||||
|
<Link Source="WebSockets" Target="Options" />
|
||||||
|
<Link Source="WebSockets" Target="StaticFiles" />
|
||||||
|
<Link Source="WebSockets" Target="Testing" />
|
||||||
|
</Links>
|
||||||
|
</DirectedGraph>
|
||||||
Loading…
Reference in New Issue