
Vasily
21.07.2017
13:00:08
Ну и учитывая некую неясность, как поддерживать структуру билд файла в актуальном состоянии...

Friedrich
21.07.2017
13:00:54
На каждый билд 3 минуты тратить теперь чтоли?

Google

Friedrich
21.07.2017
13:01:24
А я люблю проект пересобирать часто.
Обычно с dotCover после каждого сохранения.

Vasily
21.07.2017
13:01:50
https://docs.microsoft.com/ru-ru/visualstudio/msbuild/how-to-build-incrementally

Friedrich
21.07.2017
13:02:01
Ок, это про мсбилд,
Видишь, там инкрементальная сборка есть, и поэтому народ им пользуется.
А без неё-то как? :)

Vasily
21.07.2017
13:02:46
Ну тут просто было вроде утверждение , что в мсбилд ее нет

Friedrich
21.07.2017
13:02:54
Не, ну это неправда же.

Vasily
21.07.2017
13:03:09
Я поэтому и говорю, что как велосипед - ок

Evgeniy
21.07.2017
13:03:16
Было утверждение, что она примитивная.

Friedrich
21.07.2017
13:03:31
Другой вопрос, что инкрементальная сборка дотнет-проектов — это вообще довольно странный предмет.

Vasily
21.07.2017
13:03:35

Google

Vasily
21.07.2017
13:03:57
Это скорее парадигма с++ этц

Friedrich
21.07.2017
13:04:07
Но, если честно, я не думаю, что нам нужна ещё одна система сборки для дотнета.
А вот для других вещей очень даже пригодилась бы.

Vasily
21.07.2017
13:04:17
Ну тут понятно, что у человека в бэкграунде много цпп

Evgeniy
21.07.2017
13:04:25

Vasily
21.07.2017
13:04:51
Компиляторы и тайп провайдеры будут долго собираться и при инкрементальной сборке, если что

Friedrich
21.07.2017
13:05:08
Я сейчас использую Invoke-Build, представляете? Это же ужос!

Vasily
21.07.2017
13:05:09
Особенно тайп провайдеры
Я даж не знаю, что это такое

Friedrich
21.07.2017
13:05:59
https://github.com/nightroman/Invoke-Build/blob/ebde6a2ef4f84b9069a3ee2d6fb30779bb0df624/Tests/Incremental.test.ps1#L141-L150 — такое.

Vasily
21.07.2017
13:06:11
А, типа psake

Friedrich
21.07.2017
13:06:16
Не.
psake как раз не умеет в инкрементальные билды, а эта хренюшка умеет.
И мне инкрементальные билды часто нужны для всяких мелочей, с которыми не работает msbuild.
Всякие там картинки перегонять, публиковать документы, рисовать схемы.

Vasily
21.07.2017
13:07:08

Evgeniy
21.07.2017
13:07:23

Friedrich
21.07.2017
13:07:24
Я с большим удовольствием буду пользоваться билд-системой на F# :)

Vasily
21.07.2017
13:07:58
Соответственно нетворк коллы, вот это вот все

Google

Oleg
21.07.2017
13:45:48
Скорости компиляции никогда не бывает достаточно
Мне Го тоже показался быстрым, но когда кода стало 2k строк стало напрягать

Vasily
21.07.2017
13:46:41
С ним будет больше проблем, чем их решения
Ну и лучше позиционировать как билд систему не для .net
А, как говорили выше, для прочего разного

Oleg
21.07.2017
13:48:34
Все так и есть. Только одним msbuild обычно не отделаешься. У мс какой-то korebuild видел. Вот это костыль

Vasily
21.07.2017
13:49:03
Каких сценариев он не покрывает?

Oleg
21.07.2017
13:49:46
Ещё не нравится когда в проекте начинают лепить батники по паре килобайт, а потом на bash портируют

Vasily
21.07.2017
13:50:25
Это не проблемы билд систем
Это проблемы отдельных людей
И это, не рослин, шоле, в качестве компилятора?
Пичалька

Oleg
21.07.2017
13:51:07
Не знаю, вспогательный код сгенерить, версии пропатчить, пакет собрать, запушить, да много чего
Рослин и неткоре

Vasily
21.07.2017
13:51:39

Nikolay
21.07.2017
13:52:38
Есть xbuild, но он уже deprecated

Vasily
21.07.2017
13:52:42

Oleg
21.07.2017
13:53:02

Google

Vasily
21.07.2017
13:53:20

Oleg
21.07.2017
13:53:23

Vasily
21.07.2017
13:53:31
Первый вопрос - зачем?

Oleg
21.07.2017
13:53:45
Зачем что?

Vasily
21.07.2017
13:53:56
Собирать локально релизную версию

Nikolay
21.07.2017
13:55:12
Чутка не в тему вопрос, почему Firacode в VS и VSCode по разному отображается?

Vasily
21.07.2017
13:55:17
Я понимаю сценарий локально подменить сборки

Oleg
21.07.2017
13:55:23
Нет, это ни в коем случае нельзя. Бывает надо проект в самом основании собрать, они в разных репах и нугетах и каждый со своим жц

Vasily
21.07.2017
13:56:27
Что еще сильно в коде напрягает - переопределение операторов типа ++
Впрочем, это беда общая в f#
Хрен поймешь ведь
Что значит ..>

Oleg
21.07.2017
13:57:04
Это из fake, мне fileset билдер больше по душе
Но до Хопака все равно далеко
Что значит ..>
С благодарностью приму любые предложения. Сам уже пять вариантов перепробовал

Adam
21.07.2017
13:59:04

Nikolay
21.07.2017
13:59:38

Oleg
21.07.2017
13:59:43

Google

Vasily
21.07.2017
14:01:04
''' // cut the trailing "\"
let d = if root.Length < path.Length then 1 else 0
path.Substring(root.Length + d)
else
path'''
// cut the trailing "\"
let d = if root.Length < path.Length then 1 else 0
path.Substring(root.Length + d)
else
path
Жесть
path.TrimRight('\\')

Oleg
21.07.2017
14:02:04

Vasily
21.07.2017
14:02:13
https://github.com/OlegZee/Xake/blob/5074d22c545f2efcd1644e5cfd910ea51bed3fec/core/DotnetTasks.fs

Nikolay
21.07.2017
14:02:28

Vasily
21.07.2017
14:02:45
https://github.com/OlegZee/Xake/blob/5074d22c545f2efcd1644e5cfd910ea51bed3fec/core/DotnetTasks.fs#L46

Oleg
21.07.2017
14:02:49

Vasily
21.07.2017
14:03:23
let levelFromString defaultLevel (text:string) :Level =
if text.IndexOf "): warning " > 0 then Level.Warning
else if text.IndexOf "): error " > 0 then Level.Error
else defaultLevel

Nikolay
21.07.2017
14:03:23
Дело видимо в размере шрифта
Но в VSCode в пикселях шрифт, а в VS видимо в поинтах

Oleg
21.07.2017
14:03:55
Движки текстового рендеринга очень разные, растеризация фонтов

Vasily
21.07.2017
14:06:06
Можно и Contains

Friedrich
21.07.2017
14:06:13

Vasily
21.07.2017
14:06:30
Рослин сам генерирует все предупреждения
Там нормальный апи

Friedrich
21.07.2017
14:08:06
@olegzee, а вот этот мего-код я бы советовал согласовать с vscode: https://github.com/OlegZee/Xake/blob/5074d22c545f2efcd1644e5cfd910ea51bed3fec/core/DotnetTasks.fs#L69-L74
У них там в tasks.json тоже можно выбирать парсер ошибок и предупреждений компилятора. Наверняка они там нормально сделали, чтоб дружило с msbuild.

Oleg
21.07.2017
14:08:10
Там нормальный апи
Понятно, про такой способ вообще не думал, рослин из нугета из командной строки использовал

Friedrich
21.07.2017
14:08:42
Я щас попробую найти, где у них там эта парсилка лежит. Если найду, скину ссылку.

Vasily
21.07.2017
14:08:51
type private obsolete = System.ObsoleteAttribute
[<obsolete("Use Path.parse instead")>]
let parseFileMask = Path.parse
ЗАЧЕМ????