問題タブ [dotnet-publish]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
928 参照

c# - Linux .NET Core で Windows サービスを発行する

Windows の Visual Studio 2019 で .NET Core コンソール アプリケーション (Windows 10 を搭載したサーバーで Windows サービスとして実行する準備ができている) を開発しており、継続的な開発ツールは CentOS 8 (GoCD) にあります。

そのアプリケーションを Windows で公開し、サービスとして実行すると、すべてがうまくいきます。Linux で公開し、ビルドしたアプリケーションを Windows 10 で実行しようとすると、次のようになります。

未処理の例外。System.PlatformNotSupportedException: ServiceController を使用すると、Windows サービスの操作とアクセスが可能になり、他のオペレーティング システムには適用されません。/opt/gocd-agent-1/go-agent-19.12.0/pipelines/app-SCHEDULER-PRODUCTION/ の appIV.Scheduler.ServiceBaseLifetime..ctor(IApplicationLifetime applicationLifetime) の System.ServiceProcess.ServiceBase..ctor() でapp-SCHEDULER-PRODUCTION/appIV/appIV.Scheduler/Service/ServiceBaseLifetime.cs:15行目

CentOS 8 での環境:

次のコマンドでアプリケーションを公開します

-r win-x64パラメーターは、Windows をターゲットとする Linux で dotnet 公開するのに十分であると考えていましたが、明らかに間違っています。アプリケーションは、通常のコンソール アプリケーションとして実行されている限り動作しています ( --console パラメータを使用して、そのサービスをコンソール アプリケーションとして実行できます)。しかし、何らかの理由で、Linux で公開されたアプリケーションが Windows でサービスとして実行できないことを理解していません。

エラーが発生したサービスとして実行を管理するクラス:

}