В моих предыдущих проектах .NET Я выполнил всю разработку в Visual Studio, но я также создал пакетный файл/файл MSBuild, чтобы можно было собрать весь проект (включая настройки, пакеты NuGet, zip-файлы с двоичными файлами и т. д.) одним щелчком мыши. . Вот пример из предыдущего проекта.
В конце концов, я хочу сделать что-то подобное с моим тестовым проектом .NET Core.
Но сейчас у меня ничего не получается первый шаг: я не могу собрать его вне Visual Studio, чтобы результат работал на другом компьютере с Windows без установленного .NET Core.
(на первом этапе я игнорирую кроссплатформенность часть - я буду рад заставить это работать в Windows)
Что у меня есть
Мне удалось заставить это работать внутри Visual Studio Community Edition 2015 следующим образом:
- создайте новый проект в Visual Studio: «Новый проект» ⇒ «Интернет» ⇒ «Консоль». Приложение (Пакет)"
- создайте новый профиль публикации в Visual Studio («Создать» ⇒ «Опубликовать» в меню).
Это создаст сценарий PowerShell (и XML-файл с настройками)
Когда я выполняю «Сборка» ⇒ «Публикация». " в меню снова, Visual Studio, видимо, выполняет ранее созданный скрипт PowerShell снова.
Результат весит чуть больше 90 МБ, состоит из 825 файлов в 598 папках и выглядит следующим образом:
Когда я копирую его на другой компьютер (установлена Windows 7/.NET 4/.NET Core не установлен), это работает.
То, что я пытался получить тот же результат за пределами Visual Studio
1. dotnetPublish
Этот ответ и этот ответ звучат так, будто я могу использовать dnuPublish для достижения того же результата через командную строку.
Я понимаю, что некоторые части .NET В настоящее время ядро по-прежнему перемещает цели, поэтому, очевидно, вместо этого dnu теперь является dotnet.
Поэтому я попытался выполнить публикацию в dotnet (и создал пакетный файл) для него:
Код: Выделить всё
dotnet publish "%~dp0\src\CoreTestVisualStudio" -c Release -r win7-x64 -o "%~dp0\release\cli"

Очевидно, среда выполнения .NET Core здесь отсутствует, и как и ожидалось, это приложение аварийно завершает работу, когда я пытаюсь запустить его на компьютере без установленного .NET Core (тот же, что упоминался выше).
2. Сценарий PowerShell из профиля публикации
Я пытался выполнить сценарий PowerShell (который был создан при создании профиля публикации) вне Visual Studio, но это не удалось, поскольку сценарий ожидает некоторые параметры и Я не знаю, что передать:
Код: Выделить всё
param($publishProperties, $packOutput, $nugetUrl)
Код: Выделить всё
# to learn more about this file visit http://go.microsoft.com/fwlink/?LinkId=524327
< h2>TL;DR
Что я делаю не так?
Я знаю, что первый выпуск .NET Core в основном ориентирован на ASP.NET, но, насколько я понял, приложения ASP.NET Core — это тоже просто консольные приложения, поэтому я подумал, что базовое консольное приложение теперь будет работать.
С другой стороны, большая часть документации по началу работы с консольными приложениями все еще отсутствует, так что, возможно, еще слишком рано и публикация в dotnet для консольных приложений еще не завершена?
Я подозреваю, что не делаю ничего плохого и что это проблема в инструментах командной строки .NET Core, поэтому я разместил ее в системе отслеживания проблем инструментов командной строки.
Подробнее здесь: https://stackoverflow.com/questions/345 ... s-on-a-mac