Wer wünscht sich nicht bereits bei der Entwicklung auf Inkompatibilitäten der Plattformen hingewiesen zu werden. Der API Analyzer hilft dabei.

.NET Core/Standard kommt häufig zum Einsatz, wenn die Software nicht nur unter Windows, sondern auch unter Linux oder macOS laufen soll. Bei der Entwicklung auf einem Windows-Gerät fällt die Verwendung einer problematischen API jedoch nicht auf. Eine Library hilft uns Entwickler dabei.

Der Platform Compatibility Analyzer lässt sich einfach als NuGet-Paket einbinden und nimmt sofort seine Arbeit auf. Sämtliche gefunden Probleme werden entweder über das Glühbirnen-Symbol dargestellt, oder erscheinen in der Fehlerliste (die Einstufung ob Warning, Error etc. kann in den Einstellungen angepasst werden).

Welche Prüfungen finden statt?

Folgende Plattform-Prüfungen werden aktuell abgedeckt:

  • Prüfung 1: Die verwendete .NET Core oder .NET Standard API wirft eine PlatformNotSupportedException. Dabei wird ersichtlich, auf welcher Plattform dieser API nicht verfügbar ist.
  • Prüfung 2: Laut NuGet implementiert .NET Framework 4.6.1 den .NET Standard 2.0. Dies ist allerdings nicht korrekt. Bei dieser Meldung wird eine API verwendet, die im .NET Framework 4.6.1 nicht unterstützt wird.
  • Prüfung 3: Verwendung einer nicht unterstützten nativen API in einer .NET Standard/UWP-Anwendung.

Zusätzlich wird auf Verwendung von obsoleten API-Aufrufen untersucht. Zum aktuellen Zeitpunkt werden die nachfolgenden Verwendungen markiert:

Sollte ich diesen Analyzer verwenden?

Besteht die Chance, dass die Software auf einer anderen Plattform eingesetzt wird, empfehle ich den Einsatz des API Analyzer unbedingt. So werden bereits zur Entwicklung Problemstellen identifiziert und können sofort behoben werden. Etwaige Inkompatibilitäten erst bei Testläufen zu finden, kann große Umstellungen und somit hohe Kosten bedeuten.

Wer die Plattformprüfung auf spezifische Plattformen einschränken möchte, kann auszulassende Plattformen im Projektfile konfigurieren:

<PropertyGroup>
    <PlatformCompatIgnore>Linux;MacOSX</PlatformCompatIgnore>
</PropertyGroup>

Happy Coding!

Über den Autor

Norbert Eder

Ich bin ein leidenschaftlicher Softwareentwickler und Fotograf. Mein Wissen und meine Gedanken teile ich nicht nur hier im Blog, sondern auch in Fachartikeln und Büchern.

Hinterlasse einen Kommentar