PostSharp.Patterns.Diagnostics not supported on .NET 3.5? - postsharp

It seems that PostSharp.Patterns.Diagnostics.dll is not available for .NET 3.5.
I'm unable to use logging on .NET 3.5. Switching to .NET 4.0 works fine; however I need to target .NET 3.5.
When on .NET 3.5 the logging smart tag is also not available.
Is this the expected behavior?

PostSharp Pattern Libraries are not supported on .NET 3.5.
On the other hand PostSharp Aspect Framework (core of PostSharp) and PostSharp Architecture Framework are supported.

Related

System.Data.Entity is not available

I have added .Net Standard Library 2.0 and I have installed EntityFramework 6.4.0 via NuGet Package manager, But unable to inherit DbContext in my class because System.Data.Entity is not available. What should I do to use DbContext?
As #magicandre1981 said, you need to upgrade to .NET Standard 2.1.
I hate all these hidden version incompatibilities! We had EntityFramework 6.2 running in a .NET Standard 2.0 project. Updating EF produced no version incompatibility warnings, even though if you look closely from EF 6.3+ it requires .NET Standard 2.1.
Edit: And the calling project is Framework 4.8, which does NOT support .NET Standard 2.1. So it's back to EF 6.2 and .NET Standard 2.0 for me.

Is it possible to use Entity Framework 6.3.0 in a .NET Standard 2.0 class library?

Is it possible to use Entity Framework 6.3.0 in a .NET Standard 2.0 class library?
In Dependencies -> Packages I have a reference to Entity Framework 6.3.0
And I have code like this:
using System.Data.Entity;
public partial class AlertContext : DbContext
But I get the following errors:
The type or namespace name 'Entity' does not exist in the namespace
'System.Data' (are you missing an assembly reference?)
The type or namespace name 'DbContext' could not be found (are you
missing a using directive or an assembly reference?)
6.3.0 was the first version of Entity Framework 6 to target .NET Standard; it targets .NET Standard 2.1 along with .NET 4.0 and .NET 4.5, as can be seen in its Nuget listing. 6.2.0 only targeted .NET.
Note that .NET Standard 2.0 is still not a valid target.
Depending on your scenario, you might be able to get away with multi-targeting your library to .NET (in my example below, .NET 4.7.2) and .NET Standard 2.1:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net472;netstandard2.1</TargetFrameworks>
</PropertyGroup>
</Project>
Whether this is viable depends on 2 factors:
Your other references. The combination I offer above will be fine in most cases as .NET 4.7.2 and .NET Standard 2.1 can reference .NET Standard 2.0 packages, which covers most but by no means all modern packages.
The frameworks that you wish to consume your library from. The .NET target means, of course, that the library can be consumed by .NET Framework projects of the same .NET version or higher. The .NET Standard 2.1 target allows the library to be consumed by projects targeting .NET Standard 2.1, .NET Core 3.0, Mono 6.4, and higher, plus the latest versions of Xamarin. The notable omission is versions of .NET Core prior to 3.0. EF6 is not available to .NET Core 1 or 2. See the .NET Standard .NET implementation support table for the full list.
* I have used .NET 4.7.2 for my illustration because whilst .NET 4.6.1 officially supports .NET Standard 2.0, Microsoft recommend using 4.7.2 or higher. See my answer here for more information.
I found two alternatives:
downgrade EF to a lower version (6.2) or
Nuget install Microsoft.EntityFrameworkCore and use the following :
using Microsoft.EntityFrameworkCore;
public partial class AlertContext : DbContext

Nuget installs EntityFramework 6.0.1 to .NET 3.5 class library

I am rather confused about the behaviour of Nuget Package manager and Entity Framework. As far as I have been seraching, Entity Framework supports only version 3.5 in .NET 3.5 (which was shipped with the .NET SP1). However, when I run Nuget Package it offered me to install EF 5 and today (upgrade to) EF 6.0.1. I am using Visual Studio 2010 and the project is a class library with target framework .NET 3.5.
My questions:
a) Can you use EF 5 or 6 with .NET 3.5? - My answer is no as well as some other answer in here.
b) How is it possible that Nuget offers me to download these versions?
c) I downloaded EF 5 with Nuget and it worked. How is that possible? (Even on EF website they say it is only for .NET 4.0 and higher)
We, the Entity Framework team, decided not to fix this issue (See Work Item 1341)
Only the version of System.Data.Entity.dll that ships with .NET Framework 3.5 will work with projects that target .NET Framework 3.5.

Using Autofac with Webforms and .NET 3.5

I'm trying to use Autofac with my current application but I'm using the .NET 3.5 and the NuGet package only works with the .NET 4.5.
What is the best (or latest) release that I can use with ASP.NET and .NET 3.5?
If my eyes work correctly, this list shows that Autofac 2.6.3.862 is the latest stable release for .NET 3.5.

How to check if entity framework 5 is running with .net framework 4.5

I am confusing if entity framework 5 is based on .net framework 4.5 or .net framework 4.0 in my project, because when I added ef5 to my project from nuget, it shows the run time version is v4.0.30319 as in attached image. (I assume it should be v4.5.50709?)
In the project settings, the targeted framework is correctly set to .Net Framework 4.5 and I am using visual studio 2012.
If it is not using .net framework 4.5. How I can do to make sure it is using .net framework 4.5? Thanks for your help.
There is no 4.5 Runtime. The 4.5 Framework is built ontop of the 4.0 Runtime and CLR. What you are seeing is expected.