web-dev-qa-db-ja.com

Visual Studioアプリケーションの2つ以上の主要な方法?

私のプロジェクトでは、同じ署名を持つ3つ以上のMainメソッドがあります。 1つはwinFormで、もう1つはコンソールクラスです。

それらのいずれかをエントリポイントとして設定する方法。

エントリポイントを設定する1つのメインメソッドの前に[STAThread]を宣言しましたが、機能していませんか?

Visual Studio Express2010を使用しています

20
PawanS

ソリューションエクスプローラーでプロジェクトを右クリックしてプロジェクトのプロパティに移動し、[プロパティ]をクリックします。最初のタブに、エントリポイントのドロップダウンリストが表示されます。適切なメインメソッドを選択します。

33
Josh

STAThreadはエントリポイントを設定しません-メインを実行するスレッドにシングルスレッドアパートメントを使用するようにランタイムに強制します。

Joshが言うように、プロジェクトのプロパティでスタートアップオブジェクトを設定する必要があります。それがVSExpressに表示されない場合は、高度なビルドプロパティを表示するように強制する必要があります。[ツール]\[オプション]を開き、[プロジェクトとソリューション]の[高度なビルド構成を表示する]をオンにします。

アプリケーションどちらかはコンソールアプリである必要があることに注意してくださいまたは WinFormsアプリ。 1つとしてのみ構築できます(とにかく、構成ごとに)。 WinFormsアプリとして起動するとコンソールが表示されるか、コンソールアプリとして起動するとコンソールが表示されなくなります。

ロジックの大部分をクラスライブラリに配置し、2つのラッパーアプリケーション(1つはWinForms、もう1つはコンソール)を作成して、関連するUIを表示し、クラスライブラリに委任することを検討しましたか?

8
Jon Skeet

プログラムに2つのメインメソッドコンパイラがある場合は混乱するので、c#program put main classgiveを実行します

public Class one

{
public static void main()
{
System.console.writeline("One");
}

public Class two
{
public static void main()
{
System.console.writeline("Two");
}
}

コンソールでC#を実行する

CSC Multimain.cs/main:one

  • 出力1

CSC Multimain.cs/main:two

  • 出力2
4
Senthil

宣言するすべてのクラスにMainメソッドを配置できます。一部のプログラマーはこれを利用して、宣言する各クラスに小さなテストアプリを構築します。

ただし、プロジェクトのクラス間で複数のMainメソッドを宣言する場合は、IDEにどのクラスになりたいかを指定する必要があります。アプリのエントリポイント。これを行うには:

  1. Visual Studioでプロジェクトを開いた状態で、プロジェクト> [プロジェクト名]プロパティ ...を選択します(ここで、[プロジェクト名]はプロジェクトの名前です)。
  2. スタートアップオブジェクトリストボックスから、エントリポイントとなるMainメソッドを含むクラスを選択します。
1
Nermien Barakat

1つのプログラムに複数のメインメソッドを配置できますが、一度に1つのメインメソッドを持つプログラムがコンパイルされます。たとえば、このコードをコピーしてエディターに貼り付け、名前を変更します。最初の行でリリースして変更を確認します。

#define Release 
using System;
class Program
{  
#if Release==true
    public static void Main(string[] args) //for enemy
    {     
        Console.WriteLine("go to  hell");
        Console.ReadLine();
    }


#Elif Release==false
    static void Main(string[] args) //for friend
    {    

         Console.WriteLine("hello ");

        Console.ReadLine();
    }

#endif 
}
0
piyush sharma

この方法でもできますが、どのメインメソッドがエントリポイントになるかを設定する方法がわかりません

 public static void Main(string args)
    {
        Console.WriteLine("this is second main method");
    }

   public static void Main(string[] args)
    {
        Program.Main("second main method");
   }
0
Adiii

この問題は、ここの手順で簡単に解決できます。1。ソリューションを開きます。22つのクラスを別々のクラスファイルに分割します。3。メインメニューバーから[プロジェクト]タブをクリックします。4。カーソルをプロパティに移動します。5。目的のクラスを選択します。 「参照パス」に対して実行したい名前6.プロジェクトをコンパイルすると、エラーは解消されます。

0
Shirley