Моя конечная цель - создать кросс-платформенное (не web-приложение) консольное приложение, поэтому я сейчас изучаю .NET Core.
В моих предыдущих проектах .NET я сделал всю разработку внутри Visual Studio, но я также создал файл пакета /MSBuild, чтобы я мог построить весь проект (включая установки, пакеты NuGet, zip файлы с двоичными файлами и т.д.) с один клик. Вот пример из предыдущего проекта.
В конце концов, я хочу сделать что-то подобное с моим тестовым проектом .NET Core.
Но сейчас я не могу выполнить первый шаг: я не могу создать его за пределами Visual Studio, так что результат будет работать на другом компьютере под управлением Windows без установки .NET Core.
(на первом этапе я игнорирую кросс-платформенную часть - я буду рад заставить ее работать в Windows)
Что у меня
Мне удалось заставить его работать внутри Visual Studio 2015 Community Edition следующим образом:
-
создать новый проект в Visual Studio: "Новый проект" ⇒ "Веб" ⇒ "Консольное приложение (пакет)"
-
создать новый профиль публикации внутри Visual Studio ( "Build" ⇒ "Опубликовать" в меню).
Это создаст a Powershell script (и XML файл с настройки)
Здесь мой тестовый проект на GitHub.
Когда я снова создаю "Build" ⇒ "Опубликовать" в меню, Visual Studio, по-видимому, снова запустит ранее созданный PowerShell script.
Результат чуть более 90 МБ, состоит из 825 файлов в 598 папках и выглядит примерно так:
Когда я копирую его на другой компьютер (установлен Win 7/.NET 4/.NET Core не), он работает.
Что я попытался получить за пределами Visual Studio
1. dotnet publish
Этот ответ и этот ответ звучит так, как будто я могу использовать dnu publish
для достижения того же результата через командной строки.
Я понимаю, что части .NET Core по-прежнему движутся цели прямо сейчас, поэтому очевидно dnu
теперь dotnet
вместо.
Итак, я попытался выполнить dotnet publish
(и создал командный файл) для него:
dotnet publish "%~dp0\src\CoreTestVisualStudio" -c Release -r win7-x64 -o "%~dp0\release\cli"
Результат состоит из файла .exe
и набора DLL, всего 25 файлов и 1,5 МБ, все в одной папке:
Очевидно, что среда выполнения .NET Core отсутствует здесь, и, как ожидалось, это приложение выходит из строя, когда я пытаюсь выполнить его на компьютере без установленной .NET Core (такой же, как указано выше).
2. The Powershell script из профиля публикации
Я попытался выполнить Powershell script (который был создан, когда я создал профиль публикации) за пределами Visual Studio, но он потерпел неудачу, потому что script ожидает некоторые параметры, и я не знаю, что передать:
param($publishProperties, $packOutput, $nugetUrl)
В этой строке также находится строка script:
# to learn more about this file visit http://go.microsoft.com/fwlink/?LinkId=524327
... но ссылка просто указывает на целевую страницу в блоге .NET Web Development and Tools.
TL; DR
Что я делаю неправильно?
Я знаю, что первый выпуск .NET Core в основном фокусируется на ASP.NET, но, как я понял, приложения ASP.NET Core просто консольные приложения, поэтому я подумал, что теперь будет работать базовое консольное приложение. < ш > С другой стороны, большая часть консольного приложения "начало работы" docs по-прежнему отсутствует, поэтому, возможно, это слишком рано и dotnet publish
для консольные приложения еще не закончены?
Редактировать через несколько дней: я подозреваю, что я не делаю ничего плохого и что это проблема в инструментах командной строки .NET Core, поэтому я отправил его в средство отслеживания проблем командной строки.