如何使用mono和dnx / dnvm在OSX上定位.NET35?

时间:2015-11-13 10:51:06

标签: unity3d mono .net-3.5 dnx dnvm

在使用Visual Studio 2015的Windows上,我可以使用dnu build编译项目。 project.json文件如下所示:

{
  "version": "1.0.0-*",
  "description": "My Class Library",
  "authors": [ "Class Library template" ],
  "tags": [""],
  "projectUrl": "",
  "licenseUrl": "",
  "tooling": {
    "defaultNamespace": "Common"
  },

  "frameworks": {
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-*",
        "System.Collections": "4.0.11-beta-*",
        "System.Linq": "4.0.1-beta-*",
        "System.Runtime": "4.0.21-beta-*",
        "System.Threading": "4.0.11-beta-*"
      }
    }
  }
}

在Mac上安装monodnvmdnx后,根据this tutorial,我实际上可以在OSX上编译同一个项目!这本身已经非常棒了!

现在,我将以下框架添加到我的project.json文件中:

"frameworks": {
    "dnx35": { }, //"net35"
    "dnx451": { },
    "dnxcore50": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-*",
        "System.Collections": "4.0.11-beta-*",
        "System.Linq": "4.0.1-beta-*",
        "System.Runtime": "4.0.21-beta-*",
        "System.Threading": "4.0.11-beta-*"
      }
    }

这仍然在Windows上编译,并按预期产生三组dll 但是,在OSX上它不构建dnx20目标。虽然据我所知,可以通过传入mcs参数将单声道编译器.net35设置为目标sdk

所以我的问题是:我可以使用mono?

在OSX上使用dnx来定位.NET35吗?

修改 这个问题的目标是编译一组可以导入Unity3d的dll。由于Unity3d使用mono作为运行时,我希望能够通过使用dnu build来实现,因为能够在任何平台上开发这些dll。

1 个答案:

答案 0 :(得分:1)

您可以通过project.json文件中的compilationOptions传递自定义Rosyln编译器选项:

"compilationOptions": {
    "optimize": true,
    "define": ["RELEASE", "TRACE", "PLAYSCRIPT"]
},

查看Github aspnet / dnx项目中的各种project.json文件,即project.json

但是这些选项被传递给Rosyln而不是mcs,Mono被用作Rosyln编译器作为服务的 CLR主机,但我不相信你是替代Mono& #39; s mcs为此(评论这个人?)