VD>Так что нужно просто комитить бинарники при любом изменении Nemerle.MSBuild.targets или MSBuildTask.dll.
Т.е. получается такой цирк:
1) собираю обновленный Nemerle.MSBuild.Task.dll и остальное со старым targets-файлом,
2) заменяю в boot новой версией Nemerle.MSBuild.Task.dll
3) обновляю targets-файл, и снова пересобираюсь (для проверки)
4) выполняю коммит
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, VladD2, Вы писали:
VD>>Так что нужно просто комитить бинарники при любом изменении Nemerle.MSBuild.targets или MSBuildTask.dll.
H>Т.е. получается такой цирк:
H>1) собираю обновленный Nemerle.MSBuild.Task.dll и остальное со старым targets-файлом, H>2) заменяю в boot новой версией Nemerle.MSBuild.Task.dll H>3) обновляю targets-файл, и снова пересобираюсь (для проверки) H>4) выполняю коммит
Если перевести Nemerle.MSBuild.Task.dll на C#, то эта процедура сильно упростится.
Добавил давеча параметр в компилятор, позволяющий отключить проверку переполнения, осуществляющуюся по-умолчанию: -checked+/-
Он работает, фсе замечательно, но вот при добавлении соответствующего параметра в msbuild возник вопрос.
Обновленный мною Nemerle.MSBuild.targets (в <Ncc> добавил атрибут CheckIntegerOverflow="$(CheckIntegerOverflow)") копируется в boot каталог и используется для билда всего что есть. Но сборщик ругается, что для моего параметра (CheckIntegerOverflow) не нашлось свойства в классе Ncc. И правильно — его там еще нет.
Как вообще быть в такой ситуации?
Напрашивается банальное решение — в boot иметь targets-файл, с которым сборщик сможет работать, а не копировать его из каталога проекта Nemerle.MSBuild.Tasks.
Здравствуйте, hardcase, Вы писали:
H>Обновленный мною Nemerle.MSBuild.targets (в <Ncc> добавил атрибут CheckIntegerOverflow="$(CheckIntegerOverflow)") копируется в boot каталог и используется для билда всего что есть. Но сборщик ругается, что для моего параметра (CheckIntegerOverflow) не нашлось свойства в классе Ncc. И правильно — его там еще нет. H>Как вообще быть в такой ситуации?
Комитить бут, чтобы в нем лежали свежие сборки.
H>Напрашивается банальное решение — в boot иметь targets-файл, с которым сборщик сможет работать, а не копировать его из каталога проекта Nemerle.MSBuild.Tasks.
Тоже логично.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, hardcase, Вы писали:
H>Обновленный мною Nemerle.MSBuild.targets (в <Ncc> добавил атрибут CheckIntegerOverflow="$(CheckIntegerOverflow)") копируется в boot каталог и используется для билда всего что есть.
Он копируется не только в boot, но и в папку каждой стадии сборки $(NRoot)\bin\$(Configuration)\StageX (X=1..4). При внесении каких-либо изменений это тоже нужно учитывать.
Здравствуйте, gloomy rocker, Вы писали:
H>>Обновленный мною Nemerle.MSBuild.targets (в <Ncc> добавил атрибут CheckIntegerOverflow="$(CheckIntegerOverflow)") копируется в boot каталог и используется для билда всего что есть. GR>Он копируется не только в boot, но и в папку каждой стадии сборки $(NRoot)\bin\$(Configuration)\StageX (X=1..4). При внесении каких-либо изменений это тоже нужно учитывать.
В общем, нужно подумать. От Nemerle.MSBuild.targets зависит сборка проектов компилятора. Боюсь, что если хранить его старую копию в БУТ-е, это может привести к тому, что с его помощью бедет нельзя собрать проекты компилятора, так как в них уже будут использоваться новые свойства.
Так что нужно просто комитить бинарники при любом изменении Nemerle.MSBuild.targets или MSBuildTask.dll.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, gloomy rocker, Вы писали:
GR>>Если перевести Nemerle.MSBuild.Task.dll на C#, то эта процедура сильно упростится.
H>Предлагаешь этим заняться? Могу сделать в принципе.
Думаю такая переделка избавит от этой и от некоторых других проблем.
Здравствуйте, gloomy rocker, Вы писали:
GR>Если перевести Nemerle.MSBuild.Task.dll на C#, то эта процедура сильно упростится.
Это давно надо было сделать (да исходно даже). Просто руки все не доходят. Там интелекта — 0. Шарпа за глаза. А всех этих проблем с компиляцией и блокировками можно было бы избежать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Это давно надо было сделать (да исходно даже). Просто руки все не доходят. Там интелекта — 0. Шарпа за глаза. А всех этих проблем с компиляцией и блокировками можно было бы избежать.
Я хотел ее рефлектором в c# декомпилировать и все, кроме функции Ncc.LogEventsFromTextOutput выглядит после декомпиляции вполне прилично, но с LogEventsFromTextOutput получается совсем харкор:
Здравствуйте, seregaa, Вы писали:
S>Я хотел ее рефлектором в c# декомпилировать и все,
Ну, это уже черезчур. Как потом этот код поддерживать то?
S>кроме функции Ncc.LogEventsFromTextOutput выглядит после декомпиляции вполне прилично, но с LogEventsFromTextOutput получается совсем харкор: S>
Здравствуйте, VladD2, Вы писали:
VD>А не проще просто взять и переписать?
Получается, что проще. Но для этого нужно, чтобы до этой задачи дошли чьи то руки. Я думал обойтись малой кровью, но не вышло (
Здравствуйте, seregaa, Вы писали:
S>Получается, что проще. Но для этого нужно, чтобы до этой задачи дошли чьи то руки. Я думал обойтись малой кровью, но не вышло (
Выбор решений малой крови очень часто со временем становится причиной большого кровопролития, но уже других лиц.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Nemerle.MSBuild.targets, почему не в boot?
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, seregaa, Вы писали:
S>>Получается, что проще. Но для этого нужно, чтобы до этой задачи дошли чьи то руки. Я думал обойтись малой кровью, но не вышло (
VD>Выбор решений малой крови очень часто со временем становится причиной большого кровопролития, но уже других лиц.
ОК. Я займусь.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[11]: Nemerle.MSBuild.targets, почему не в boot?
Здравствуйте, hardcase, Вы писали:
H>ОК. Я займусь.
Nemerle.MSBuild.Tasks переписан на C#, структура его идентична прежнему на Nemerle. Осталось лишь использовать этот проект для полного билда, я не слишком хорошо разбираюсь в сборке потому сделать это самостоятельно не смог.