When tracing dependencies *without* linking, don't fail the build if there are unresolved dependencies
There are legitimate use cases for referencing BCL assemblies that *aren't* in the Mono WebAssembly BCL, particularly for Blazor-on-the-server which runs on CoreCLR (and hence supports a broader BCL) anyway.
This commit is contained in:
parent
7918fe2c39
commit
efbf2c5678
|
|
@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Blazor.Build
|
||||||
|
|
||||||
internal void ResolveAssemblies()
|
internal void ResolveAssemblies()
|
||||||
{
|
{
|
||||||
var visitedAssemblies = new Dictionary<string, AssemblyEntry>();
|
var visitedAssemblies = new HashSet<string>();
|
||||||
var pendingAssemblies = new Stack<AssemblyNameReference>();
|
var pendingAssemblies = new Stack<AssemblyNameReference>();
|
||||||
pendingAssemblies.Push(Assembly.Definition.Name);
|
pendingAssemblies.Push(Assembly.Definition.Name);
|
||||||
ResolveAssembliesCore();
|
ResolveAssembliesCore();
|
||||||
|
|
@ -85,15 +85,24 @@ namespace Microsoft.AspNetCore.Blazor.Build
|
||||||
{
|
{
|
||||||
while (pendingAssemblies.TryPop(out var current))
|
while (pendingAssemblies.TryPop(out var current))
|
||||||
{
|
{
|
||||||
if (!visitedAssemblies.ContainsKey(current.Name))
|
if (!visitedAssemblies.Contains(current.Name))
|
||||||
{
|
{
|
||||||
|
visitedAssemblies.Add(current.Name);
|
||||||
|
|
||||||
|
// Not all references will be resolvable within the Mono BCL, particularly
|
||||||
|
// when building for server-side Blazor as you will be running on CoreCLR
|
||||||
|
// and therefore may depend on System.* BCL assemblies that aren't present
|
||||||
|
// in Mono WebAssembly. Skipping unresolved assemblies here is equivalent
|
||||||
|
// to passing "--skip-unresolved true" to the Mono linker.
|
||||||
var resolved = Resolve(current);
|
var resolved = Resolve(current);
|
||||||
visitedAssemblies[current.Name] = resolved;
|
if (resolved != null)
|
||||||
Results.Add(resolved);
|
|
||||||
var references = GetAssemblyReferences(resolved);
|
|
||||||
foreach (var reference in references)
|
|
||||||
{
|
{
|
||||||
pendingAssemblies.Push(reference);
|
Results.Add(resolved);
|
||||||
|
var references = GetAssemblyReferences(resolved);
|
||||||
|
foreach (var reference in references)
|
||||||
|
{
|
||||||
|
pendingAssemblies.Push(reference);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue