Self-contained дистрибуція .NET Core додатків


Якщо ви раптом пропустили, то .NET тепер open source, а .NET Core це безкоштовний, open source, багатоплатформовий фреймворк, який ви можете завантажити і запустити за час <10 хвилин. Ви можете отримати його на Mac, Windows і на пів-дюжини Unix-ів з сайту dot.net Спробуйте його разом з безкоштовною, кроссплатформної Visual Studio Code і ви будете писати на C# F# завжди і скрізь.

OK, з урахуванням вищесказаного, є два способи розгортати .NET Core програми. Це FDD і SCD. Оскільки ПБА (трилітерні акроніми) це нерозумно, то це Framework-dependent і Self-contained Deployment.

Коли .NET Core встановлюється, то він знаходиться, наприклад, в C:\program files\dotnet на Windows. У директорії «Shared» є купа .NET штук, які, скажімо так, shared тобто загальні. Може бути безліч директорій всередині, як ви можете побачити нижче в моїй папці на скріншоті. У вас може бути безліч установок .NET Core.



Коли ви встановлюєте свою програму та його залежності, АЛЕ НЕ .NET Core саме, то ви залежите від .NET Core, яке вже встановлено на цільовій машині. Це чудово для Web Apps або для систем з великою кількістю додатків, але що якщо я захочу написати програму і дати його вам як zip або на usb-флешці і я просто хочу щоб воно працювало. Я можу включити .NET Core на додачу, тоді все це і вийде Self Contained Deployment.

Я зроблю моє «Hello World» додаток за розміром більше, ніж воно було б, використовуючи загальносистемну установку, але я буду знати, що воно буде Просто Працювати тому що воно повністю самостійне.

Якщо я разверну моє додаток разом з .NET Core, то важливо пам'ятати, що я буду відповідальний за сервіс .NET Core і підтримку її в актуальному оновленому стані. Також мені потрібно вибрати цільові платформи заздалегідь. Якщо я хочу, щоб вона використовувалася на Mac, Windows і Linux І просто працювало, то мені потрібно включити ці цільові платформи і побудувати пакети для них. Це все інтуїтивно зрозуміло, але добре і знати напевно.

Для прикладу, я візьму моє невелике додаток (я використовую просте «dotnet new» додаток) і модифицирую project.json в текстовому редакторі.

Моє додаток це .NETCore.App, але воно не буде використовувати платформу .NET Core, яка встановлена. Вона буде використовувати локальну версію так що я видалю «type=»platform"" з залежностей. Ось що залишиться:

"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.1"
}
}
} 
}

Далі я додам runtimes секцію, щоб вказати які з runtime я хочу задати. Список Runtime IDE знаходиться тут

"runtimes": {
"win10-x64": {},
"osx.10.10-x64": {},
"ubuntu.14.04-x64": {}
}

Примітка перекладача (на всяк випадок): ця секція додається перед останньою дужкою

Після запуску команди «dotnet restore» вам захочеться побудувати проект для кожного з runtime таким чином:

dotnet build -r win10-x64
dotnet build -r osx.10.10-x64
dotnet build -r ubuntu.14.04-x64

І після цього опублікувати реліз після того як ви протестували і т. п.

dotnet publish -c release -r win10-x64
dotnet publish -c release -r osx.10.10-x64
dotnet publish -c release -r ubuntu.14.04-x64

Після того, як це зроблено, я отримаю моє портативне додаток n папках, готове для розгортання на будь-якій системі, на якій мені захочеться.



Ви можете побачити в директорії Win10 додаток «MYAPPLICATION.exe» (моє називається scd.exe) яке може бути запущено відразу, а не з допомогою цих штук, на кшталт «dotnet run», які використовують розробники.



.NET Core Docs є багато хорошої документації, з приводу того, як налаштувати і визначити точно, що буде розгорнуто з вашим self-contained додатком. Ви можете також звернути увагу на статтю trimming to .NET Core, де ведеться мова про те, що в майбутньому все стане більш автоматичним, можливо аж до рівня методу.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.