2

ローカルでテストするか、ビルド サーバーのコードをコミットするかに応じて、以下のコードを切り替える必要があることがよくあります。

    /// <summary>
    /// Main entry point to the application.
    /// </summary>
    public static void Main()
    {
        // Don't forget to uncomment this if committing (!)
        //var servicesToRun = new ServiceBase[] {new myservice()};
        //ServiceBase.Run(servicesToRun);

        // and re-comment this
        RunAsConsoleApp();

    }

コードでテストして出力タイプを伝える方法があれば、本当に便利です。つまり、「ああ、コミットしてビルドを壊した」という時間の浪費をすべて回避できます。

        if (IsConsoleApp)
        {
            Using(var host= new ServiceHost(typeof(myservice))
            {
               host.Open();
               etc....
            }
        }
        else
        {
            var servicesToRun = new ServiceBase[] {new myservice()};
            ServiceBase.Run(servicesToRun);
        }
4

4 に答える 4

4

の代わりにEnvironment.UserInteractiveプロパティを使用してみましたIsConsoleAppか?

于 2012-10-16T12:54:56.787 に答える
1

絶対にデバッグ ビルドをコミットしない場合は、[プロジェクト プロパティ] > [ビルド] タブで DEBUG 定数が定義されている限り、次のことを試すことができます。

#if DEBUG
    RunAsConsoleApp();
#else
    RunNormally();
#endif

ただし、誰かが誤ってデバッグ ビルドをコミットした場合、これは依然としてエラーが発生しやすくなります。

于 2012-10-16T12:57:31.213 に答える
0

別のビルド構成 (リリース - サービスなど) をセットアップし、条件付きコンパイル ステートメントを使用してコード ブロックを切り替えることができます。

詳細については、こちらを参照してください。

http://msdn.microsoft.com/en-us/library/aa691095(v=vs.71).aspx

したがって、Release - Service 構成で、RELEASESERVICE などの定数を定義します。次に、これを次のように使用します。

#if RELEASESERVICE

    etc
于 2012-10-16T12:55:20.343 に答える