controlflow / resharper-heapview

ReSharper Heap Allocations Viewer plugin
MIT License
303 stars 28 forks source link

Target .NET Standard instead of Framework? #84

Closed AraHaan closed 1 year ago

AraHaan commented 3 years ago

I noticed that under src/dotnet that they target net472, however not all OS's have that version (Mac and Linux). I think it should be possible to have them instead target .NET Standard 2.0 (since net472 technically implements .NET Standard 2.0 and as such can consume libraries compiled under .NET Standard 2.0 as well.

As such then it could technically run under the runtime shipped with the .NET SDK (instead of mono) as well.

ForNeVeR commented 3 years ago

since net472 technically implements .NET Standard 2.0 and as such can consume libraries compiled under .NET Standard 2.0 as well.

I believe it should be the other way around to use ReSharper/Rider SDK: there're libraries targeting net472 in the SDK itself, so, if the plugin targets netstandard, it won't be easy to use the SDK libraries.

This shouldn't be a problem for building or using the plugins on macOS and Linux, though.

As such then it could technically run under the runtime shipped with the .NET SDK (instead of mono) as well.

The plugin already works well with .NET 5. I'm not aware of any modern cases of running ReSharper/Rider plugins on Mono.

AraHaan commented 3 years ago

since net472 technically implements .NET Standard 2.0 and as such can consume libraries compiled under .NET Standard 2.0 as well.

I believe it should be the other way around to use ReSharper/Rider SDK: there're libraries targeting net472 in the SDK itself, so, if the plugin targets netstandard, it won't be easy to use the SDK libraries.

This shouldn't be a problem for building or using the plugins on macOS and Linux, though.

As such then it could technically run under the runtime shipped with the .NET SDK (instead of mono) as well.

The plugin already works well with .NET 5. I'm not aware of any modern cases of running ReSharper/Rider plugins on Mono.

A problem is when the plugin needs to use things that is not implemented in Mono and as such causes the plugin to crash. A good example is some things Mono strip from their runtime that is in the .NET Framework / Core versions.

ForNeVeR commented 3 years ago

I'm sorry, why is this a problem? Could you give any realistic explanation for why this code would ever run on Mono? It's a plugin for IDEs (Visual Studio, Rider) that don't use Mono.