如何从终端(Mac OS)编译和运行C#项目

如何从终端(Mac OS)编译和运行C#项目,c#,mongodb,terminal,mono,visual-studio-mac,C#,Mongodb,Terminal,Mono,Visual Studio Mac,我想在MacOS服务器上编译并运行C#project。并没有GUI可供使用,所以我需要从终端编译并运行它 我将C#项目的目录从本地复制到服务器。 (我的C#项目是由visual studio for mac创建的。) 在服务器上,我已经安装了mono。我可以编译并运行基本的C代码“hello world!”通过mcs Program.cs和mono Program.exe但我无法编译和运行我的项目 我的Program.cs代码如下: using System; using System.IO;

我想在MacOS服务器上编译并运行C#project。并没有GUI可供使用,所以我需要从终端编译并运行它

我将C#项目的目录从本地复制到服务器。 (我的C#项目是由visual studio for mac创建的。)

在服务器上,我已经安装了
mono
。我可以编译并运行基本的C代码“hello world!”通过
mcs Program.cs
mono Program.exe
但我无法编译和运行我的项目

我的
Program.cs
代码如下:

using System;
using System.IO;
using MongoDB.Bson;
using MongoDB.Driver;
namespace testMongo
{
    class MainClass
    {
        public static void Main(string[] args)
       {
            var connectionString = "mongodb://localhost";
            var client = new MongoClient(connectionString);
            var database = client.GetDatabase("test");
            var collection = database.GetCollection<Entity>("user");

            //do something
       }

    }
        public class Entity
    {
        public ObjectId Id { get; set; }

        public int user_id { get; set; }

        public double[] feature { get; set; }
    }
}
编译器似乎找不到MongoDB,我也不知道为什么

有人能告诉我怎么解决这个问题吗

更新

我可以使用msbuild运行我的项目


我使用
msbuild projectname.sln/p:Configuration=Debug
然后我得到了
projectname.exe
文件,并使用
mono projectname.exe运行它

您需要将程序集引用传递给mcs。所以类似于
mcs Program.cs/reference:path/to/MongoDb.dll
。您需要确定需要引用哪些程序集。或者,您可以创建一个.csproj文件,在其中添加引用或NuGet包,然后使用msbuild编译代码。谢谢@MattWard我使用
mcs Program.cs/reference:path/to/MongoDb.dll作为所有引用,它可以编译。我得到了Program.exe文件,但当我使用
mono Program.exe运行它时,我得到了以下错误
未处理的异常:System.IO.FileNotFoundException:无法加载文件或程序集或其依赖项之一。文件名:“MongoDB.Driver,Version=2.4.4.0,Culture=neutral,PublicKeyToken=null”
如何解决此问题?您需要引用程序使用的所有.dll。仅仅MongoDb.dll是不够的。如果查看.csproj,应该可以看到引用了哪些程序集。我仍然认为使用msbuild比手动创建mcs命令行更容易。在使用Visual Studio for Mac编译项目时,可以查看msbuild输出,然后重新使用csc命令行。或者只在服务器上使用msbuild。或者在本地构建,然后将二进制文件复制到服务器上。@MattWard非常感谢!我尝试使用msbuild而不是mcs命令,结果它成功了!
Program.cs(3,7): error CS0246: The type or namespace name 'MongoDB' could not be found. Are you missing an assembly reference?
Program.cs(4,7): error CS0246: The type or namespace name 'MongoDB' could not be found. Are you missing an assembly reference?
Program.cs(5,7): error CS0246: The type or namespace name 'MongoDB' could not be found. Are you missing an assembly reference?
Program.cs(54,16): error CS0246: The type or namespace name 'ObjectId' could not be found. Are you missing an assembly reference?