@@ -3700,12 +3700,17 @@ type TcAssemblyResolutions(tcConfig: TcConfig, results: AssemblyResolution list,
37003700
37013701 static member GetAllDllReferences ( tcConfig : TcConfig ) = [
37023702 let primaryReference = tcConfig.PrimaryAssemblyDllReference()
3703- //yield primaryReference
3703+
3704+ let assumeDotNetFramework = primaryReference.SimpleAssemblyNameIs( " mscorlib" )
37043705
37053706 if not tcConfig.compilingFslib then
37063707 yield tcConfig.CoreLibraryDllReference()
3708+ if assumeDotNetFramework then
3709+ // When building desktop then we need these additional dependencies
3710+ yield AssemblyReference( rangeStartup, " System.Numerics.dll" , None)
3711+ yield AssemblyReference( rangeStartup, " System.dll" , None)
3712+ yield AssemblyReference( rangeStartup, " netstandard.dll" , None)
37073713
3708- let assumeDotNetFramework = primaryReference.SimpleAssemblyNameIs( " mscorlib" )
37093714 if tcConfig.framework then
37103715 for s in defaultReferencesForScriptsAndOutOfProjectSources tcConfig.useFsiAuxLib assumeDotNetFramework tcConfig.useSdkRefs do
37113716 yield AssemblyReference( rangeStartup, ( if s.EndsWith( " .dll" , StringComparison.OrdinalIgnoreCase) then s else s+ " .dll" ), None)
@@ -4107,7 +4112,6 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
41074112 | None ->
41084113 tcImports.ImplicitLoadIfAllowed( ctok, m, assemblyName, lookupOnly)
41094114 look tcImports
4110-
41114115
41124116 member tcImports.FindDllInfo ( ctok , m , assemblyName ) =
41134117 match tcImports.TryFindDllInfo ( ctok, m, assemblyName, lookupOnly= false ) with
@@ -4784,7 +4788,7 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
47844788 // If the user is asking for the default framework then also try to resolve other implicit assemblies as they are discovered.
47854789 // Using this flag to mean 'allow implicit discover of assemblies'.
47864790 let tcConfig = tcConfigP.Get ctok
4787- if not lookupOnly && tcConfig.implicitlyResolveAssemblies then
4791+ if not lookupOnly && tcConfig.implicitlyResolveAssemblies then
47884792 let tryFile speculativeFileName =
47894793 let foundFile = tcImports.TryResolveAssemblyReference ( ctok, AssemblyReference ( m, speculativeFileName, None), ResolveAssemblyReferenceMode.Speculative)
47904794 match foundFile with
@@ -4825,7 +4829,7 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
48254829 ResultD [ assemblyResolution]
48264830 | None ->
48274831#if NO_ MSBUILD_ REFERENCE_ RESOLUTION
4828- try
4832+ try
48294833 ResultD [ tcConfig.ResolveLibWithDirectories assemblyReference]
48304834 with e ->
48314835 ErrorD e
@@ -4846,7 +4850,7 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
48464850 ResultD [ resolved]
48474851 | None ->
48484852 ErrorD( AssemblyNotResolved( assemblyReference.Text, assemblyReference.Range))
4849- else
4853+ else
48504854 // This is a previously unencountered assembly. Resolve it and add it to the list.
48514855 // But don't cache resolution failures because the assembly may appear on the disk later.
48524856 let resolved , unresolved = TcConfig.TryResolveLibsUsingMSBuildRules( tcConfig, [ assemblyReference ], assemblyReference.Range, mode)
@@ -4861,9 +4865,7 @@ and [<Sealed>] TcImports(tcConfigP: TcConfigProvider, initialResolutions: TcAsse
48614865 // Note, if mode=ResolveAssemblyReferenceMode.Speculative and the resolution failed then TryResolveLibsUsingMSBuildRules returns
48624866 // the empty list and we convert the failure into an AssemblyNotResolved here.
48634867 ErrorD( AssemblyNotResolved( assemblyReference.Text, assemblyReference.Range))
4864-
4865- #endif
4866-
4868+ #endif
48674869
48684870 member tcImports.ResolveAssemblyReference ( ctok , assemblyReference , mode ) : AssemblyResolution list =
48694871 CommitOperationResult( tcImports.TryResolveAssemblyReference( ctok, assemblyReference, mode))
0 commit comments