• ベストアンサー

C#のコマンドラインの分割コンパイルと実行について

コマンドラインでC#のプログラムをコンパイルと実行する方法 mainが1つでsubが1の場合は以下にある。 http://d.hatena.ne.jp/taka_2/20080124/p6 mainが1つでsubが2つの場合はコマンドはどうするか。 以下に使用したコマンドを示す csc /target:library sub1.cs csc /target:library sub2.cs csc /R:sub1.dll /R:sub2.dll main1.cs とすると error CS0246: 型または名前空間名 'sub1' が見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。 のエラーメッセージが表示される。 わかっている方がおりましたら、教えて下さい。 以下にプログラムを示す。 //---------------------------------------------------------------------------- // mainファイルの内容 using System ; using System.Text; using System.IO; using sub1 ; // subの名前空間を指定(分割コンパイル用) using sub2 ; // subの名前空間を指定(分割コンパイル用) namespace main1 { class Program { static void Main(string[] args) { int a = 10 ; int b = 5 ; sub1.dfsub_cs1 df1 = new sub1.dfsub_cs1() ; // sub1のクラスを確保(分割コンパイル用) sub2.dfsub_cs2 df2 = new sub2.dfsub_cs2() ; // sub2のクラスを確保(分割コンパイル用) Console.Write("add {0,3:D} * {1,3:D} = {2,5:D}\n", a,b, df1.multiply( a, b) ); Console.Write("add {0,3:D} / {1,3:D} = {2,5:D}\n", a,b, df2.divide( a, b) ); return ; } } } //---------------------------------------------------------------------------- // sub1ファイルの内容 namespace sub1 { public class dfsub_cs1 { public int multiply(int a, int b ) { return a * b ; } } } //---------------------------------------------------------------------------- // sub2ファイルの内容 namespace sub2 { public class dfsub_cs2 { public int divide(int a, int b ) { return a / b ; } } }

質問者が選んだベストアンサー

  • ベストアンサー
  • FAY
  • ベストアンサー率49% (95/193)
回答No.2

> csc /target:library sub1.cs > csc /target:library sub2.cs > csc /R:sub1.dll /R:sub2.dll main1.cs 私の環境では示されているコマンドラインで正常にコンパイルされ 作成されたexeも問題なく実行できました。 お使いのsub1.csに本当にnamespace sub1が 定義されているかご確認ください。 きちんと定義されている場合はすべてのファイルを フルパスで指定するとどうなるでしょうか。 sub1.cs、sub2.cs、main1.cs が c:\tempにあるとしたら csc /target:library /out:c:\temp\sub1.dll c:\temp\sub1.cs csc /target:library /out:c:\temp\sub2.dll c:\temp\sub2.cs csc /R:c:\temp\sub1.dll /R:c:\temp\sub2.dll /out:c:\temp\main1.exe c:\temp\main1.cs とか。

uranasu02
質問者

お礼

その方法でできました。 回答ありがとうございます。

その他の回答 (1)

  • taka_2
  • ベストアンサー率80% (4/5)
回答No.1

csc /R:sub1.dll,sub2.dll main1.cs とすれば良いのでは。

uranasu02
質問者

お礼

その方法でできました。 回答ありがとうございます。 さらに第3の方法として、サブをまとめて1つのDLLにする方法がありました。 csc /target:library /out:sub12.dll sub1.cs sub2.cs csc /r:sub12.dll main1.cs でもできました。

関連するQ&A

専門家に質問してみよう