Home
Options

Add support for FrameworkReference's

In .NET Core 3.0, FrameworkReference was added in place of using nuget packages for ASP.NET Core. This means that in the latest beta of LINQPad I cannot reference my ASP.NET Core 3.0 assemblies. When I do, I get the following runtime exception:

Could not load type 'Microsoft.AspNetCore.Hosting.IWebHostEnvironment' from assembly 'Microsoft.AspNetCore.Hosting.Abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

The 3.0 version of the Microsoft.AspNetCore.Hosting.Abstractions assembly is no longer a nuget package, but rather a FrameworkReference and is located (on my machine) at:
C:\Program Files\dotnet\packs\Microsoft.AspNetCore.App.Ref\3.0.0\ref\netcoreapp3.0\Microsoft.AspNetCore.Hosting.Abstractions.dll

Comments

  • Options
    Press F4 and click the checkbox Reference ASP.NET Core Assemblies.
  • Options
    edited November 2019
    Getting the same exception when referencing a 3.0 project.

    I the error when using the "Add connection => Choose datacontext" functionality and I get the error when loading an EFCore context via Linqpad reference:

    Could not load type 'Microsoft.AspNetCore.Hosting.IWebHostEnvironment' from assembly 'Microsoft.AspNetCore.Hosting.Abstractions, Version=2.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'.

    I have checked the box "Reference ASP.NET Core Assemblies" => It makes no difference.



    I have checked the generated User-Query assembly with ILSpy, and there are no Aspnet Core references:




    Any idea what we can do here?

    Edit: Same when using the add connection functionality:




    Another question regarding future .net core versioning:
    Do you plan to allow specifying the TargetFramework of a linqpad script?
    Ex.: netcoreapp3.0 or netcoreapp3.1

  • Options
    edited November 2019
    @JoeAlbahari

    I have further debugged this issue and I think i have found the root cause.

    Steps to reproduce:

    1) Create a new plain asp.net core 3.0 web api project (dotnet new web
    2) Add the following public type to the project and build the project:




    3) Create a new linqpad query tab and add a reference to the test project dll
    4) Add the following code:



    At this point, everything works

    5) Now lets add the following reference to the test project:

    PackageReference Include="Hangfire.AspNetCore" Version="1.7.7"

    6) Rebuild

    7) Re-evaluate the linqpad query:



    This is probably due to the reference of the hangfire project:




    When adding the hangfire reference, linqpad seems to completely remove the asp.net core framework references:



    When explicitly referencing Microsoft.AspnetCore.Hosting.Abstractions, the linq query does not even build:





  • Options
    Another follow-up:

    In the previous setup, when I manually try to load "Microsoft.AspNetCore.Hosting.Abstractions, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60"

    it loads the 2.x assembly:



    I guess linqpads UserLoadContext does some magic here?





  • Options
    Try the new beta. It now internally handles ASP.NET Core as references that can version-compete with your own NuGet packages.
  • Options
    @JoeAlbahari Just tested the new beta! Works perfectly now - thank you!
Sign In or Register to comment.