アプリ版:「スタンプのみでお礼する」機能のリリースについて

コマンドラインで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 ;
}
}
}

A 回答 (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

とか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/03/16 10:59

csc /R:sub1.dll,sub2.dll main1.cs


とすれば良いのでは。
    • good
    • 0
この回答へのお礼

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

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

お礼日時:2010/03/16 11:00

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!