There’s a couple of great utilities that have come out in the last few weeks in the .NET Core world that you should be aware of. They are deeply useful when porting/writing cross-platform code.

.NET API Analyzer

First is the API Analyzer. As you know, APIs sometimes get deprecated, or you’ll use a method on Windows and find it doesn’t work on Linux. The API Analyzer is a Roslyn (remember Roslyn is the name of the C#/.NET compiler) analyzer that’s easily added to your project as a NuGet package. All you have to do is add it and you’ll immediately start getting warnings and/or squiggles calling out APIs that might be a problem.

Check out this quick example. I’ll make a quick console app, then add the analyzer. Note the version is current as of the time of this post. It’ll change.

When you’re porting code over to .NET Core that has lots of Windows-specific dependencies, you might find yourself bumping into APIs that aren’t a part of .NET Standard 2.0. So, there’s a new (preview) Microsoft.Windows.Compatibility NuGet package that “provides access to APIs that were previously available only for .NET Framework.”

The point is, if the API that is blocking you from using .NET Core is now available in this compat pack, yay! But you should also know WHY you are pointing to .NET Core. Work continues on both .NET Core and .NET (Full) Framework on Windows. If your app works great today, there’s no need to port unless you need a .NET Core specific feature. Here’s a great list of rules of thumb from the docs: