2017-05-19 2 views
0

Ich versuche, eine .NET Core-App über die .NET Core Runtime, aber in einem Windows-Dienst auszuführen.Kann ich .net Core Runtime in einer Framework App hosten?

Ich versuche nicht, die Bibliothek auf dem vollen .net Framework zu laufen (es würde sowieso nicht im Moment funktionieren, da es ASP.net Core 2.0 Preview 1) ist, und mein nächster bester Versuch wäre, ein zu verwenden System.Diagnostics.Process.

Ich versuche wirklich nur, eine Möglichkeit zu finden, eine Konsolenanwendung in die Start/Stop-Methoden und das Authentifizierungsschema eines Windows-Dienstes zu packen, aber da diese Konsolenanwendung .net Core ist, frage ich mich, ob ich kann host nur die Laufzeit selbst (zB einige P/Invoking). Ich weiß, dass C++ - Anwendungen die volle Laufzeit hosten können, aber ich habe nicht gesehen, ob solch ein Mechanismus für .net Core existiert.

Hat jemand das versucht? Vielleicht eine C++/CLI-Magie, wenn ein reiner C# -Ansatz nicht funktionieren würde?

Antwort

3

Das Hosten der Laufzeit ist ein erheblicher Aufwand, da Sie die Auflösungslogik für native und verwaltete Bibliotheken handhaben müssen.

können Sie tun entweder:

  1. Starten Sie die .net Kern App als Teilprozess Process.Start(..) mit - z.B. Führen Sie den Prozess dotnet.exe mit der DLL als Argument aus.
  2. Verwandeln Sie die .net Core-Konsolenanwendung in einen Windows-Dienst. Da Servicebase nicht auf .NET Core (noch) ist, habe ich einen Wrapper-API für die notwendigen Windows-API-Aufrufe erstellt: https://github.com/dasMulli/dotnet-win32-service (folgen readme für detaillierte Anweisungen)
+0

Danke, dass Wrapper aussieht wie, wonach ich suche. Ich werde es am Wochenende versuchen und Sie wissen lassen! – Henry

+0

Tun Sie das, Feedback & GitHub Probleme willkommen. (Häufigstes Problem: Windows-Dienste starten immer in 'C: \ Windows \ system32' und können nicht wie appSettings.json geladen werden) –

Verwandte Themen