2015-11-13 2 views
2

на Windows с использованием Visual Studio 2015, я могу скомпилировать проект с dnu build. Файл project.json выглядит следующим образом:Как настроить таргетинг .NET35 на OSX с помощью mono и dnx/dnvm?

{ 
    "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, dnvm и dnx на Mac, согласно 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.

Так что мой вопрос: могу ли я настроить .NET35 на dnx на OSX, используя моно?

EDIT Целью этого вопроса является компиляция набора dll, который может быть импортирован в Unity3d. И поскольку Unity3d использует mono в качестве среды выполнения, я хотел бы иметь возможность сделать это, используя dnu build, чтобы иметь возможность разрабатывать эти DLL на любой платформе.

+0

Я очень рекомендую попробовать CoreCLR вместо Mono. Проделана большая работа, чтобы убедиться, что работает сценарий OSX/Ubuntu. –

+0

Другой вопрос. Зачем настраивать 3.5 на OSX, если у вас работает 'dnxcore50'? 'dnxcore50' будет поддерживать OSX/Linux/Windows без проблем. –

+0

хороший вопрос! Не упоминал об этом в ответе. Созданные dll должны использоваться Unity3d 5.x, которые используют моно, и поэтому должны быть совместимы с .NET 3.5. – RoelF

ответ

1

Вы можете передать пользовательские опции компилятора Rosyln через compilationOptions в файле project.json:

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

Посмотрите на различных project.json файлов проекта САШ/DnX Github, т.е. project.json

Но эти параметры передаются Rosyln not mcs, Mono используется как CLR-хост для компилятора Rosyln в качестве сервиса), но я не думаю, что вы заменяете Mono's mcs за это (комментарии по этому поводу?)

Смежные вопросы