Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

getProjectInfo doesn't return framework references? #171

Closed
dsyme opened this issue Sep 27, 2022 · 17 comments · Fixed by #177
Closed

getProjectInfo doesn't return framework references? #171

dsyme opened this issue Sep 27, 2022 · 17 comments · Fixed by #177

Comments

@dsyme
Copy link
Contributor

dsyme commented Sep 27, 2022

For some reason I thought the results returned by ProjectLoader.getProjectInfo would include all the -r references for all the .NET DLLs, e.g. in the OtherOptions field. However I can't find these anywhere, and I don't know why

For example consider this script

crackProject.fsx:

#r "nuget: Ionide.ProjInfo, 0.60.1"

open System.IO
open Ionide.ProjInfo
open Ionide.ProjInfo.Types

let argv = fsi.CommandLineArgs

let projectFile = Path.GetFullPath(argv[1])

let cwd = System.Environment.CurrentDirectory |> System.IO.DirectoryInfo

let _toolsPath = Init.init cwd None

let opts =
    match ProjectLoader.getProjectInfo projectFile [] BinaryLogGeneration.Off [] with 
    | Result.Ok res -> res
    | Result.Error err -> failwithf "%s" err

printfn "ReferencedProjects:"
for rp in opts.ReferencedProjects do
    printfn "    %s" rp.RelativePath

printfn "PackageReferences:"
for rp in opts.PackageReferences do
    printfn "    %s" rp.FullPath

printfn "OtherOptions:"
for opt in opts.OtherOptions do
    printfn "    %s" opt

t.fsproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Compile Include="Program.fs" />
  </ItemGroup>

  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
  </ItemGroup>

</Project>

Results:

C:\misc\t>dotnet fsi c:\github\dsyme\fsharp\tests\scripts\crackProject.fsx t.fsproj
Cracking project options....
ReferencedProjects:
PackageReferences:
    C:\Users\donsy\.nuget\packages\fsharp.core\7.0.0-beta.22427.1\lib\netstandard2.1\FSharp.Core.dll
    C:\Users\donsy\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll
OtherOptions:
    -o:C:\misc\t\obj\Debug\net7.0\t.dll
    -g
    --debug:portable
    --noframework
    --define:TRACE
    --define:DEBUG
    --define:NET
    --define:NET7_0
    --define:NETCOREAPP
    --define:NET5_0_OR_GREATER
    --define:NET6_0_OR_GREATER
    --define:NET7_0_OR_GREATER
    --define:NETCOREAPP1_0_OR_GREATER
    --define:NETCOREAPP1_1_OR_GREATER
    --define:NETCOREAPP2_0_OR_GREATER
    --define:NETCOREAPP2_1_OR_GREATER
    --define:NETCOREAPP2_2_OR_GREATER
    --define:NETCOREAPP3_0_OR_GREATER
    --define:NETCOREAPP3_1_OR_GREATER
    --optimize-
    --tailcalls-
    --target:exe
    --nowarn:IL2121
    --warn:3
    --warnaserror:3239
    --fullpaths
    --flaterrors
    --highentropyva+
    --targetprofile:netcore
    --nocopyfsharpcore
    --deterministic+
    --simpleresolution

There are no -r: references to reference assemblies etc.

@baronfel Do you know if this should be working? Is it the case that we're not actually evaluating the full set of referenced assemblies of something?

@dsyme
Copy link
Contributor Author

dsyme commented Sep 27, 2022

@baronfel From reading these docs it looks like we may need to add ResolveFrameworkReferencesDesignTime to this list???

I'd imagine this means Ionide is resolving to default framework references when doing its analysis??

@TheAngryByrd
Copy link
Member

It seems to work in 6.0, this seems like a problem with 7.0 and different Microsoft.Build related stuff.

@dsyme dsyme changed the title getProjectInfo doesn't return .NET references? getProjectInfo doesn't return framework references? Sep 27, 2022
@dsyme
Copy link
Contributor Author

dsyme commented Sep 27, 2022

It seems to work in 6.0

Could you send me an example? After adding a global.json for 6.0.400 I see this:

C:\misc\t>dotnet --version
6.0.400

C:\misc\t>dotnet "c:\Program Files\dotnet\sdk\6.0.400\FSharp\fsi.dll" c:\github\dsyme\fsharp\tests\scripts\crackProject.fsx t.fsproj
Cracking project options....
ReferencedProjects:
PackageReferences:
    C:\Users\donsy\.nuget\packages\fsharp.core\7.0.0-beta.22427.1\lib\netstandard2.1\FSharp.Core.dll
    C:\Users\donsy\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll
OtherOptions:
    -o:C:\misc\t\obj\Debug\net7.0\t.dll
    -g
    --debug:portable
    --noframework
    --define:TRACE
    --define:DEBUG
    --define:NET
    --define:NET7_0
    --define:NETCOREAPP
    --define:NET5_0_OR_GREATER
    --define:NET6_0_OR_GREATER
    --define:NETCOREAPP1_0_OR_GREATER
    --define:NETCOREAPP1_1_OR_GREATER
    --define:NETCOREAPP2_0_OR_GREATER
    --define:NETCOREAPP2_1_OR_GREATER
    --define:NETCOREAPP2_2_OR_GREATER
    --define:NETCOREAPP3_0_OR_GREATER
    --define:NETCOREAPP3_1_OR_GREATER
    --optimize-
    --tailcalls-
    -r:C:\Users\donsy\.nuget\packages\fsharp.core\7.0.0-beta.22427.1\lib\netstandard2.1\FSharp.Core.dll
    -r:C:\Users\donsy\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll
    --target:exe
    --warn:3
    --warnaserror:3239
    --fullpaths
    --flaterrors
    --highentropyva+
    --targetprofile:netcore
    --nocopyfsharpcore
    --deterministic+
    --simpleresolution

Same results for 6.0.302

@TheAngryByrd
Copy link
Member

TheAngryByrd commented Sep 27, 2022

I don't have any of the 7.0 installed. I've seen this kind of weird behavior when a new SDK on a different major version comes out (similar to when fsi wasn't working with different beta sdks if you recall that.)

dotnet --info
.NET SDK (reflecting any global.json):
 Version:   6.0.401
 Commit:    0906eae6f8

Runtime Environment:
 OS Name:     Windows
 OS Version:  10.0.22000
 OS Platform: Windows
 RID:         win10-x64
 Base Path:   C:\Program Files\dotnet\sdk\6.0.401\

global.json file:
  C:\Users\jimmy\Repositories\public\TheAngryByrd\dotnet-proj-info\global.json

Host:
  Version:      6.0.9
  Architecture: x64
  Commit:       163a63591c

.NET SDKs installed:
  5.0.404 [C:\Program Files\dotnet\sdk]
.NET runtimes installed:
  Microsoft.AspNetCore.App 5.0.13 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
  Microsoft.AspNetCore.App 6.0.5 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]  Microsoft.AspNetCore.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]  Microsoft.NETCore.App 5.0.13 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]  Microsoft.NETCore.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]  Microsoft.NETCore.App 6.0.5 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]  Microsoft.NETCore.App 6.0.8 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]  Microsoft.NETCore.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]  Microsoft.WindowsDesktop.App 5.0.13 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]  Microsoft.WindowsDesktop.App 5.0.17 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]  Microsoft.WindowsDesktop.App 6.0.5 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]  Microsoft.WindowsDesktop.App 6.0.8 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]  Microsoft.WindowsDesktop.App 6.0.9 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Download .NET:  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info

ReferencedProjects:
PackageReferences:
    C:\Users\jimmy\.nuget\packages\fsharp.core\6.0.6\lib\netstandard2.1\FSharp.Core.dll
    C:\Users\jimmy\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll
OtherOptions:
    -o:C:\Users\jimmy\Repositories\public\TheAngryByrd\dotnet-proj-info\playgroundtest\obj\Debug\net6.0\t.dll
    -g
    --debug:portable
    --noframework
    --define:TRACE
    --define:DEBUG
    --define:NET
    --define:NET6_0
    --define:NETCOREAPP
    --define:NET5_0_OR_GREATER
    --define:NET6_0_OR_GREATER
    --define:NETCOREAPP1_0_OR_GREATER
    --define:NETCOREAPP1_1_OR_GREATER
    --define:NETCOREAPP2_0_OR_GREATER
    --define:NETCOREAPP2_1_OR_GREATER
    --define:NETCOREAPP2_2_OR_GREATER
    --define:NETCOREAPP3_0_OR_GREATER
    --define:NETCOREAPP3_1_OR_GREATER
    --optimize-
    --tailcalls-
    -r:C:\Users\jimmy\.nuget\packages\fsharp.core\6.0.6\lib\netstandard2.1\FSharp.Core.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\Microsoft.CSharp.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\Microsoft.VisualBasic.Core.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\Microsoft.VisualBasic.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\Microsoft.Win32.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\Microsoft.Win32.Registry.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\mscorlib.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\netstandard.dll
    -r:C:\Users\jimmy\.nuget\packages\newtonsoft.json\13.0.1\lib\netstandard2.0\Newtonsoft.Json.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.AppContext.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Buffers.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Collections.Concurrent.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Collections.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Collections.Immutable.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Collections.NonGeneric.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Collections.Specialized.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.Annotations.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.DataAnnotations.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.EventBasedAsync.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ComponentModel.TypeConverter.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Configuration.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Console.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Core.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Data.Common.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Data.DataSetExtensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Data.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.Contracts.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.Debug.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.DiagnosticSource.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.FileVersionInfo.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.Process.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.StackTrace.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.TextWriterTraceListener.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.Tools.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.TraceSource.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Diagnostics.Tracing.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Drawing.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Drawing.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Dynamic.Runtime.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Formats.Asn1.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Globalization.Calendars.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Globalization.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Globalization.Extensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Compression.Brotli.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Compression.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Compression.FileSystem.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Compression.ZipFile.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.FileSystem.AccessControl.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.FileSystem.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.FileSystem.DriveInfo.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.FileSystem.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.FileSystem.Watcher.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.IsolatedStorage.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.MemoryMappedFiles.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Pipes.AccessControl.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.Pipes.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.IO.UnmanagedMemoryStream.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Linq.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Linq.Expressions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Linq.Parallel.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Linq.Queryable.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Memory.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Http.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Http.Json.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.HttpListener.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Mail.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.NameResolution.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.NetworkInformation.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Ping.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Requests.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Security.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.ServicePoint.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.Sockets.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.WebClient.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.WebHeaderCollection.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.WebProxy.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.WebSockets.Client.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Net.WebSockets.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Numerics.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Numerics.Vectors.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ObjectModel.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.DispatchProxy.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Emit.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Emit.ILGeneration.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Emit.Lightweight.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Extensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Metadata.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Reflection.TypeExtensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Resources.Reader.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Resources.ResourceManager.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Resources.Writer.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.CompilerServices.Unsafe.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.CompilerServices.VisualC.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Extensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Handles.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.InteropServices.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.InteropServices.RuntimeInformation.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Intrinsics.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Loader.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Numerics.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Serialization.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Serialization.Formatters.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Serialization.Json.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Serialization.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Runtime.Serialization.Xml.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.AccessControl.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Claims.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.Algorithms.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.Cng.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.Csp.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.Encoding.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.OpenSsl.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.Primitives.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Cryptography.X509Certificates.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Principal.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.Principal.Windows.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Security.SecureString.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ServiceModel.Web.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ServiceProcess.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.Encoding.CodePages.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.Encoding.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.Encoding.Extensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.Encodings.Web.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.Json.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Text.RegularExpressions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Channels.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Overlapped.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Tasks.Dataflow.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Tasks.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Tasks.Extensions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Tasks.Parallel.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Thread.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.ThreadPool.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Threading.Timer.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Transactions.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Transactions.Local.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.ValueTuple.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Web.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Web.HttpUtility.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Windows.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.Linq.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.ReaderWriter.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.Serialization.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.XDocument.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.XmlDocument.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.XmlSerializer.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.XPath.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\System.Xml.XPath.XDocument.dll
    -r:C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\6.0.9\ref\net6.0\WindowsBase.dll
    --target:exe
    --warn:3
    --warnaserror:3239
    --fullpaths
    --flaterrors
    --highentropyva+
    --targetprofile:netcore
    --nocopyfsharpcore
    --deterministic+
    --simpleresolution

@dsyme
Copy link
Contributor Author

dsyme commented Sep 27, 2022

Thanks, how did you execute the code, via 'fsi' or a new project? Maybe my use of fsi is causing drama.

@TheAngryByrd
Copy link
Member

I did it via CLI and interactively, same results.

dotnet fsi playground.fsx -- "C:\Users\jimmy\Repositories\public\TheAngryByrd\dotnet-proj-info\playgroundtest\t.fsproj" 

@baronfel
Copy link
Collaborator

The curse of this entire project in a nutshell :)

@WillEhrendreich
Copy link

does this mean I have to uninstall vs2022 preview to get my neovim working??

@baronfel
Copy link
Collaborator

We don't know what it means as of yet. Still in the hypothesis-generation and testing phase IMO.

@TheAngryByrd
Copy link
Member

After adding net7.0 to the tfm for this project, I'm getting this error when running the tests for net 6.0

System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. 
File name: 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'
   at Ionide.ProjInfo.WorkspaceLoaderViaProjectGraph.Ionide.ProjInfo.IWorkspaceLoader.LoadProjects(FSharpList`1 projects, FSharpList`1 customProperties, BinaryLogGeneration binaryLogs)
   at Tests.testSample3$cont@295(ToolsPath toolsPath, FSharpFunc`2 workspaceFactory, FSharpList`1 expected, Logger logger, FileUtils fs, String projPath, String projDir, String l2Dir, String l2, String l1Dir, String l1, Unit unitVar) 
   

The toolpath I get for 6.0 and 7.0 is both:

toolsPath : ToolsPath "C:\Program Files\dotnet\sdk\7.0.100-rc.2.22477.23\MSBuild.dll"

Looking at older issues, i've come across dotnet/msbuild#5600 which feels oddly familiar to the problems that we're running into.

@TheAngryByrd
Copy link
Member

I did end up building ProjInfo with FSAC. I got some "interesting" findings

  • no global.json, FSAC net7.0 -> Errors: [|"internal error: One or more errors occurred. (Assembly: The system type 'System.Array' was required but no referenced system DLL contained this type, full path: System.Array)"|]

  • global.json with 6.x, FSAC net7.0 -> no errors, but no type checking

  • no global.json, FSAC net6.0 -> System.IO.FileNotFoundException: Could not load file or assembly 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. File name: 'System.Runtime, Version=7.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'

  • global.json with 6.x, FSAC net6.0 -> no errors, but no type checking

@TheAngryByrd
Copy link
Member

Seems this may be related to a change in FSharp.Core. I posted an issue dotnet/fsharp#14250 for it. I'm unsure if we have to wait for an upstream fix or we there's anything we can do about it in the meantime.

@TheAngryByrd
Copy link
Member

Well I just ended up following a thread dotnet/roslyn#19146 (comment) that talks about how to make sure that ReferencePathWithRefAssemblies is not empty. Adding FindReferenceAssembliesForReferences to ProjInfo seems to work.

I'm gonna try to see how paired down a PR I can make for this.

@dsyme
Copy link
Contributor Author

dsyme commented Nov 6, 2022

Such detective work, amazing!

Resolving this will also allow us to get fsdocs support for F# 7 ready

@baronfel
Copy link
Collaborator

baronfel commented Nov 6, 2022

@TheAngryByrd you're talking about adding that target to the set of design time targets we evaluate, right?

If so, I think this change should still (eventually) be made upstream as well - using 'normal' design time targets should be all that's required to invoke this target along the way.

@TheAngryByrd
Copy link
Member

Ok, so thinking CoreCompileDependsOn should have FindReferenceAssembliesForReferences ?

@baronfel
Copy link
Collaborator

baronfel commented Nov 6, 2022

I'm not 100% sure, but we should be able to mimic the Roslyn Target dependencies here as much as possible when it comes to ref assemblies - I think doing so will help F# be similarly supported in all tooling that expects Roslyn-like behavior.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging a pull request may close this issue.

4 participants