none
エラーメッセージ「クラスライブラリの出力タイプを持つプロジェクトを直接起動」 RRS feed

  • 質問

  • C#MVCのソースをもらったのでF5で起動しようとしたのですが、「クラスライブラリの出力タイプを持つプロジェクトを直接起動することはできま せん。このプロジェクトをデバッグするには、ライブラリプロジェクトを参照するこのソリューションに実行可能なプロジェクトを追加し、それをスタートアッ ププロジェクトとして設定します。」というエラーメッセージが出ました。

    具体的に何をすれば起動できるかがよくわからないので、どなたか教えていただけないでしょうか?
    2013年1月14日 3:22

回答

  • メッセージにある通り、デバッグ起動(F5)しようとしたプロジェクトの種類がクラスライブラリ(=ビルドするとdllファイルができる)なのが原因です。クラスライブラリは外部の他のプロセスから利用するためのものですので、動作させるためには呼び出し元となるプロジェクトが別途必要になります。
    受け取られたソリューション内に別途「○○アプリケーション」タイプのプロジェクトがあるなら、ソリューションのプロパティからそちらをスタートアッププロジェクトにしてデバッグ起動してみてください。
    もしソリューション内に起動用プロジェクトが無いのであれば、別途起動用のプロジェクトを追加して呼び出し処理を実装する必要があります。
    • 編集済み みっと 2013年1月14日 4:17
    • 回答としてマーク crofts 2013年2月9日 13:47
    2013年1月14日 4:16
  • メッセージの通り、そのプロジェクトはクラスライブラリとして作成されているからです。つまり、クラスしか含んでいないと思えば良いです。クラスしか無いのですから、直接起動することはできません。
    一般的に、アプリケーションを作成する際は、プロジェクトを新規で作成し、そこにクラスを記述します。それと同じように実行可能なプロジェクト(例えばWindowsフォームアプリケーション)を作成し、そこで、そのMVC関連のプロジェクトに含まれるクラスを利用することになります。つまり、ソリューションは以下のような構成になります。

    一つのソリューション
       ・実行用プロジェクト(例えばWindowsフォーム)
       ・クラスを提供するプロジェクト(クラスライブラリ)

    なお、プロジェクトがクラスライブラリになるかWindowsフォームになるかどうかは、プロジェクトのプロパティの[アプリケーションの種類]で選択できます。

    また、そのMVCソースが含まれるプロジェクトをコンパイルし、dllの形にして、実行可能なプロジェクト(例えばWindowsフォームアプリケーション)で参照設定し、そのMVCソースに含まれるクラスを使うこともできます。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク crofts 2013年2月9日 13:47
    2013年1月14日 4:29
    モデレータ
  • ところで、「もらった」と表現されているようですが、そのソースコードを作った方は Visual WebDeveloper Express だったんでしょうか?
    違うのであれば、それなりの知識を持って、手元環境でうまく動かせるようにまとめる作業が必要になるので、その覚悟で進めてください。
    (元の構成が不明瞭なので、経験の多い人でも具体的な手順を書くことは難しいと思います)
    • 回答としてマーク crofts 2013年2月9日 13:48
    2013年1月15日 14:14
    モデレータ

すべての返信

  • メッセージにある通り、デバッグ起動(F5)しようとしたプロジェクトの種類がクラスライブラリ(=ビルドするとdllファイルができる)なのが原因です。クラスライブラリは外部の他のプロセスから利用するためのものですので、動作させるためには呼び出し元となるプロジェクトが別途必要になります。
    受け取られたソリューション内に別途「○○アプリケーション」タイプのプロジェクトがあるなら、ソリューションのプロパティからそちらをスタートアッププロジェクトにしてデバッグ起動してみてください。
    もしソリューション内に起動用プロジェクトが無いのであれば、別途起動用のプロジェクトを追加して呼び出し処理を実装する必要があります。
    • 編集済み みっと 2013年1月14日 4:17
    • 回答としてマーク crofts 2013年2月9日 13:47
    2013年1月14日 4:16
  • メッセージの通り、そのプロジェクトはクラスライブラリとして作成されているからです。つまり、クラスしか含んでいないと思えば良いです。クラスしか無いのですから、直接起動することはできません。
    一般的に、アプリケーションを作成する際は、プロジェクトを新規で作成し、そこにクラスを記述します。それと同じように実行可能なプロジェクト(例えばWindowsフォームアプリケーション)を作成し、そこで、そのMVC関連のプロジェクトに含まれるクラスを利用することになります。つまり、ソリューションは以下のような構成になります。

    一つのソリューション
       ・実行用プロジェクト(例えばWindowsフォーム)
       ・クラスを提供するプロジェクト(クラスライブラリ)

    なお、プロジェクトがクラスライブラリになるかWindowsフォームになるかどうかは、プロジェクトのプロパティの[アプリケーションの種類]で選択できます。

    また、そのMVCソースが含まれるプロジェクトをコンパイルし、dllの形にして、実行可能なプロジェクト(例えばWindowsフォームアプリケーション)で参照設定し、そのMVCソースに含まれるクラスを使うこともできます。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク crofts 2013年2月9日 13:47
    2013年1月14日 4:29
    モデレータ
  • ご回答ありがとうございます。ソリューション内には別プロジェクトはないようです。C#2010Express にはMVCアプリのテンプレートがありませんので、VWD2010を起動したのですが、新規プロジェクトを作って元プロジェクトのDLLへの参照設定までは出来たのですが、それ以降新規プロジェクト本体のどこに何を記述するかがわかりませんでした。
    2013年1月15日 10:38
  • ご回答ありがとうございます。ということは、ソースからコントローラ用のCSファイルやViewのCSHTMLファイルなどを一つ一つ新規のプロジェクトに貼り付けていくしか方法がない、ということになるのでしょうか。C#2010Expressでは複数プロジェクトを持つことが可能なようなのですが、MVCとして動作・デバッグをしたい場合にはテンプレートがないためVWD2010を使わざるを得ない。かつVWDではソリューション・エクスプローラではトップにあるはずのソリューション表記がないため複数のプロジェクトをひとつのソリューションに入れる動作ができないようなのですが。
    2013年1月15日 10:46
  • ところで、「もらった」と表現されているようですが、そのソースコードを作った方は Visual WebDeveloper Express だったんでしょうか?
    違うのであれば、それなりの知識を持って、手元環境でうまく動かせるようにまとめる作業が必要になるので、その覚悟で進めてください。
    (元の構成が不明瞭なので、経験の多い人でも具体的な手順を書くことは難しいと思います)
    • 回答としてマーク crofts 2013年2月9日 13:48
    2013年1月15日 14:14
    モデレータ
  • 返信が遅くなり申し訳ありません。再度ソースを送付してもらったところ、あっさり動作してしまいました。ソリューションファイルが壊れていたのか、はたまた。原因はわかりません。回答を下さった皆様、お忙しい中ご協力ありがとうございました!
    2013年2月9日 13:47