2

在使用 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-*"
      }
    }
  }
}

安装后,mono在Mac 上,按照本教程,我实际上可以在 OSX 上编译相同的项目!这本身就已经非常棒了!dnvmdnx

现在,我将以下框架添加到我的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参数来设置为目标。

所以我的问题是:我可以在 OSX 上使用单声道来定位 .NET35 和 dnx 吗?

编辑 这个问题的目标是编译一组可以导入 Unity3d 的 dll。而且因为 Unity3d 使用 mono 作为运行时,我希望能够通过使用来做到这一点dnu build,以便能够在任何平台上开发这些 dll。

4

1 回答 1

1

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

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

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

但是这些选项被传递给 Rosyln 而不是 mcs,Mono 被用作 Rosyln 的编译器即服务的CLR 主机),但我不相信你是用 Mono 代替的mcs(有人对此发表评论吗?)

于 2015-11-13T12:56:48.110 回答