Duefectu
Duefectu

Reputation: 1652

Core 2 error referencing Framework libraries

I have a test project int Core 2 console (Core2ConsoleTest).

It make a reference to .NET Framework 4.6.1 Project (NetFrameworkTest).

NetFrameworkTest project references the standard System.Printer.dll.

Core2ConsoleTest arquitecture

Download Core2ConsoleTest project here

When I call to any System.Printer function I have the error: Could not load file or assembly 'System.Printing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. El sistema no puede encontrar el archivo especificado.

I tested with other standard libraries like System.Windows.Forms.dll and the same error if the Core project references a Nuget Package that uses standard libraries.

Note: The same error with ASP.Net Core 2

Thanks for your help!

Upvotes: 0

Views: 537

Answers (2)

Duefectu
Duefectu

Reputation: 1652

I really have the problem with ASP.Net Core Framework Project. I'm unable to create a new Project with Core 2.0 and reference a Framework library that references System.Printing.dll or other libraries.

But @mairaw gave me another way: On a project that works in Core 1.1, updating the libraries Nuget to 2.0, works correctly.

So it looks like a Visual Studio 2017 problem or Core templates.

My concern is to remove this functionality, because it allows to adopt the Core technology in a staggered way with a high code reuse.

Edit: Added sample projects

  1. CoreTest.zip -> A ASP.Net Core Framework Project created referencing Core 1.1 and .NET Framework 4.6.1 in the past, then upgraded to Core 2.0 using Nuget: WORKS!

  2. Core2Framework.zip -> A similar project (ASP.Net Core Framework Project created referencing Core 2.0) created with Visual Studio 2017 15.3.4: ERROR when calling System.Prinig.dll from the .NET Framework 4.6.1 Project.

Upvotes: 0

Martin Ullrich
Martin Ullrich

Reputation: 100641

This is not going to work on .NET Core.

.NET Core 2.0 has a compatibility layer that allows loading and using .NET Framework libraries but this only works as long as this library only uses types and methods that are also available on .NET Core.

Since System.Printing is not part of .NET Core, this library will fail to access it with the exception you posted.

Only .NET Framework applications can use this API (e.g. an ASP.NET Core on .NET Framework application).

Upvotes: 1

Related Questions