0

私はMonoを初めて使用し、新しくインストールしたばかりで、基本的なセットアップを取得しようとしています。

Hello.cs:

using System;
using Customz;

public class Hello
{
    public static int Main(string[] args)
    {
        Console.WriteLine( "Hello world! Customz.Beko.Wally = " + Beko.Wally() );
        Console.ReadKey();

        return 0;
    }
}

Customz / Beko.cs:

namespace Customz
{
    public class Beko
    {
        public static int Wally()
        {
             return 15;
        }
    }
}

基本的に、私は以前、Unity3DによるMonoDevelopとVisual Studioの適応でC#を使用してきました。

コンパイル時に、すべてのクラス/名前空間が要求されたときに自動参照されることを覚えています。さらに、プロジェクトディレクトリ/サブディレクトリ内にどれほど深く存在していても、それらは検索されます。

これをコンパイルする:

mcs "C:\Users\psycketom\Desktop\Mono-C#\test\Hello.cs"

結果:

C:\ Users \ psycketom \ Desktop \ Mono-C#\ test \ Hello.cs(2,7):エラーCS0246:タイプまたは名前空間名`Customz'が見つかりませんでした。usingディレクティブまたはアセンブリ参照がありませんか?
コンパイルに失敗しました:1エラー、0警告

まあ、ディレクティブが欠けていないことは知っていますusingが、アセンブリ参照が欠けているような気がします。

これを修正して、Visual Studioのような動作を実現するにはどうすればよいですか?

アップデート:

次のコマンドを発行して、ディレクトリ内のすべてをコンパイルすることができました。

mcs -out:app.exe "C:\Users\psycketom\Desktop\Mono-C#\test\*.cs"

それは機能しますが、フォルダ内のファイルのみが含まれ、フォルダ内にあるサブフォルダは考慮されません。

サブフォルダにあるファイルを含むすべてのファイルを選択するにはどうすればよいですか?(私はbashスクリプトか何かが必要かもしれないと思い始めています)

4

1 に答える 1

1

生のコマンド ラインではなく、make、NAnt、またはその他のビルド システムを使用することをお勧めします。問題はこれです:

プロジェクト フォルダーには、いくつかのファイルといくつかのフォルダーがあります。だからあなたは持っています

  • Foo.cs
  • Bar.cs
  • ビジネス/テスト.cs
  • ビジネス/フーバー、cs

mcs -out:app.exe "C:\Users\psycketom\Desktop\Mono-C#\test\*.cs"コマンド ライン シェル (コンパイラではなく) を使用すると、*ワイルドカードが展開されます。だから、それはに展開します

  • Foo.cs
  • Bar.cs

ほとんどのシェルは再帰的になりません (おそらく特別なディレクティブがなければ?)。

コマンドラインを使用することに本当に決めている場合は、次のようにする必要があります。

mcs -out:app.exe "C:\Users\psycketom\Desktop\Mono-C#\test*.cs" "C:\Users\psycketom\Desktop\Mono-C#\test\Biz*.cs"

また、コマンドラインを使用することに決めた場合は、Cygwin のようなものを試してみることをお勧めします。よりも100万倍使いやすいですcmd.exe(そして、Monoでうまく機能するようです)

私が過去に使用したもう 1 つのアイデア: MonoDevelop のようなものを使用して、ソリューションとプロジェクト ファイルを管理することもできます。これにより、基本的にプログラム内のすべてがリンクされ、コンパイラに何を含める必要があるかが伝えられます。xbuildそれ以外では、MonoDevelop が作成したツールとソリューション ファイルを使用して、コマンド ラインから簡単にビルドできます。

于 2013-01-30T16:28:54.313 に答える