現在、ローカル PC (Win & 64 ビット) で実行されている .NET (C#C) で Windows サービス アプリを構築しました。これには、独自のイベント ログ ファイルと、ポスト デバッグ用のカスタム ログ ファイルがあり、ログアウトします。c:\ProgramData\MyAppName\
.
すべての主要な機能コードを含む 1 つのプロジェクトに、主要な 2 つの DLL があります。
これらはサービス VS プロジェクトによってフックされます。サービス VS プロジェクトには、デスク トレイにある Windows フォーム プロジェクトも含まれており、サード パーティの API を使用しているため、サービスのステータス、API が稼働しているかどうか、現在のエラー、さらに、必要に応じてサービスを停止/開始できるボタンがあります。
ただし、これをすべて Windows 2012 Server に移行する必要があり、解決する必要があるいくつかの問題があります。
- サーバーにはVisual Studioがないため、プロジェクトを配置し、再構築して実行し、「参照の追加」などで行う必要があるDLLに他のアプリをフックさせるためのディレクトリはありません。
VS Web Edition などをサーバーにダウンロードして、必要に応じて管理/デバッグ/コード作成を容易にする必要がありますか?
または、DLLとregsrvrをコピーしてインストールし、サービス/アプリをサーバーにコピーするだけの別の方法はありますか?そうでない場合は、その参照が自動的に機能します。
メイン コードは、私が作成した DLL に含まれています。これには、JSON サード パーティ API で作成された DLL も付属しています。
メイン プロジェクトを再構築すると、これらは両方とも再作成されます。次に、それらを削除してサービス プロジェクトと勝利フォーム プロジェクトの両方に再追加してから、再構築して正しく実行する必要があります。
サーバー上にVSなしでこれを行うにはどうすればよいですか
- コードのデバッグ/作成を PC に保持し、ファイルをコピーすることはできますか? - パスが異なっていても、サービス/アプリからの DLL へのリンクは機能しますか? - そうでない場合、どうすればよいですか? -また、それらを保存するのに最適なフォルダーはどこですか?
また、サーバー (RD/SFTP/Win 共有) への管理者/ルート アクセス権があるにもかかわらず、C:\ ドライブに ac:\ProgramData フォルダーが表示されないことに気付きました。これは、24 時間年中無休で実行されているアプリからのすべてのログが、PC で実行されているときに記録される場所です。1 日あたり 1 つのログ ファイル、2 つの履歴ファイルが作成されます。すべて後処理のデバッグなどに使用されます。
これは、Win 2012 サーバーであり、プロジェクト内のパスを取得するために使用するコードであるためですか?
this.Logpath = Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData) + "\\" + NameOfMyApp;
動作が異なります。たとえば、Environment.SpecialFolder.CommonApplicationData は Win 2012 では別のフォルダーです。または、通常どおり参照できるように ProgramData フォルダーを表示するために何かをする必要がありますか?
最近、自分の Win7 マシンで Windows Update を実行したとき、何かがおかしい (Win7 ではよくあることのようです) ときに、ProgramData フォルダーが表示されなかった (サービスがまだ実行されていた) ときのことを覚えています。これが、すべてのデスクトップ アイコンがブックマークやフォルダと一緒に表示された理由です)。
したがって、これらの 2 つの VS プロジェクト (またはそれらが作成する作業コード) を Win7 64 ビット マシンから Win 2012 64 ビット サーバーに移動しようとしています。
すべてが機能し、すべてのフォルダー (programdata) が表示され、サーバーに Visual Studio がなくてもサービスが稼働するようにするための最善の手順は何ですか?