Re[8]: А кто у нас по T4 спец?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.16 09:50
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Опс.


Видимо это как то связано с настройками гита на предмет autocrlf — Т4 как то по разному относится к Unix и Windows LF.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[9]: А кто у нас по T4 спец?
От: Sinix  
Дата: 02.04.16 10:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Видимо это как то связано с настройками гита на предмет autocrlf — Т4 как то по разному относится к Unix и Windows LF.

Эва как. А это можно в gitconfig (который включён в репо, не в локальном) как-то прописать?
Re[10]: А кто у нас по T4 спец?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.16 10:11
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Эва как. А это можно в gitconfig (который включён в репо, не в локальном) как-то прописать?


Можно наверное. А что включать? Принудительно Windows или просто "не трогать"?
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[11]: А кто у нас по T4 спец?
От: Sinix  
Дата: 02.04.16 10:18
Оценка:
Здравствуйте, AndrewVK, Вы писали:


S>>Эва как. А это можно в gitconfig (который включён в репо, не в локальном) как-то прописать?

AVK>Можно наверное. А что включать? Принудительно Windows или просто "не трогать"?

А любой, главное чтоб у всех одинаково было.

Лично я за Windows после одного эпического фейла с уходом в продакшн собранного на linux-сервере кода. С \n в строковых константах.
* разумеется, главный косяк тут был в кривых руках, но осадок остался
Re[3]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 02.04.16 17:35
Оценка:
Здравствуйте, Sinix, Вы писали:

_R_>>Тогда может лучше заменить

S>А оно будет работать, если хост от MsBuild будет?

По идее MSBuild вообще не должен ничего генерировать, т.к. сгенерированый файл уже есть в проекте.
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: А кто у нас по T4 спец?
От: Sinix  
Дата: 02.04.16 17:45
Оценка:
Здравствуйте, IT, Вы писали:

IT>По идее MSBuild вообще не должен ничего генерировать, т.к. сгенерированый файл уже есть в проекте.

По уму все шаблоны надо при сборке запускать, чтобы не было "забыл обновить".
Re[5]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 02.04.16 17:52
Оценка:
Здравствуйте, Sinix, Вы писали:

IT>>По идее MSBuild вообще не должен ничего генерировать, т.к. сгенерированый файл уже есть в проекте.

S>По уму все шаблоны надо при сборке запускать, чтобы не было "забыл обновить".

По уму не надо. Представь, что твой шаблон, например, ходит в БД за какими-нибудь метаданными, а у билд сервера доступа к этой БД нет.
Если нам не помогут, то мы тоже никого не пощадим.
Re[11]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 02.04.16 17:56
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Можно наверное. А что включать? Принудительно Windows или просто "не трогать"?


Лучше всего "не трогать".
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: А кто у нас по T4 спец?
От: Sinix  
Дата: 02.04.16 18:29
Оценка:
Здравствуйте, IT, Вы писали:

IT>По уму не надо. Представь, что твой шаблон, например, ходит в БД за какими-нибудь метаданными, а у билд сервера доступа к этой БД нет.

Если мы про теорию, то такие редкие исключения надо в проект с condition включать, чтоб сборка на сервере их игнорила.
Re[12]: А кто у нас по T4 спец?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.16 20:20
Оценка:
Здравствуйте, IT, Вы писали:

AVK>>Можно наверное. А что включать? Принудительно Windows или просто "не трогать"?

IT>Лучше всего "не трогать".

Оно вот как раз было не трогать. А у кого то, видать, в локальных конфигах было трогать. В том числе вроде бы и у тебя. В результате у меня периодически студия начинала орать на не те концы строк. Так что лучше уж для определенных расширений пусть оно принудительно перетаптывает, причем у всех.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: А кто у нас по T4 спец?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.04.16 20:20
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Если мы про теорию, то такие редкие исключения надо в проект с condition включать


Это не теория, это практика под названием linq2db T4 models.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[7]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 03.04.16 00:30
Оценка:
Здравствуйте, Sinix, Вы писали:

IT>>По уму не надо. Представь, что твой шаблон, например, ходит в БД за какими-нибудь метаданными, а у билд сервера доступа к этой БД нет.

S>Если мы про теорию, то такие редкие исключения надо в проект с condition включать, чтоб сборка на сервере их игнорила.

У меня такие редкие исключения в каждом проекте на работе. В общем, нет смысла париться на эту тему. MSBuild всё равно не запускает перегенерацию шаблонов. И не надо.
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 03.04.16 05:28
Оценка: +1
Здравствуйте, Sinix, Вы писали:

S>Скинул. Если будет возможность, посмотри плиз на предмет косяков


Посмотрел. Не то что бы там косяки, я бы вообще всё переделал. Само по себе решение уж слишком одноразовое. Переделал на более менее переиспользуемое.
Если нам не помогут, то мы тоже никого не пощадим.
Re: А кто у нас по T4 спец?
От: xy012111  
Дата: 03.04.16 05:51
Оценка:
Здравствуйте, Sinix, Вы писали:


S>… Вроде все вопросы, кроме "что ставить из расширений?" отпали.


tangible T4 Editor 2.3.0 plus modeling tools for VS 2015 Моделинг тулз в инсталяторе можно отключить, менюшку свою вроде добавляет но так ни разу не понадобилось.

Подстветка и кой-какой интеллисенс (в коде шаблона) есть, а всё остальное, например интеллисенс в "генерируемом коде" за отдельную плату. Но бесплатного для хороший жизни более чем.
Re[4]: А кто у нас по T4 спец?
От: Sinix  
Дата: 03.04.16 07:00
Оценка:
Здравствуйте, IT, Вы писали:

IT>Посмотрел. Не то что бы там косяки, я бы вообще всё переделал. Само по себе решение уж слишком одноразовое. Переделал на более менее переиспользуемое.


Всё как бы замечательно, код красивый, только поведение теперь поломано

0. Новый вариант неподдерживаемый. Вот что будет с вероятностью 100%: Code.tt скопипащен в десяток мест, в том числе в сторонних пакетах и тут выясняется, что надо добавить ещё один replace.
1. Нужно хардкодить имя файла с ассертами.
2. Нет проверки на строгое соответствие имени шаблона и имени исходного файла. Не проверяется, что файлы должны лежать рядом.
3. Генератор не падает, если в исходном файле нет нужного класса.
4. Нет using static CodeJam.DebugCode.

Т.е. решение теперь тоже одноразовое, но в другом смысле: для нового класса ассертов придётся не просто копировать шаблон, а ещё и менять в нём код
Все пункты (1-4) должны быть в .ttinclude, чтоб не копипастить их при необходимости поправить.
Re[8]: А кто у нас по T4 спец?
От: Sinix  
Дата: 03.04.16 07:07
Оценка:
Здравствуйте, IT, Вы писали:

IT>У меня такие редкие исключения в каждом проекте на работе. В общем, нет смысла париться на эту тему. MSBuild всё равно не запускает перегенерацию шаблонов. И не надо.

Надо-надо. Как только шаблонов больше, чем пара и в проект допускают джуниора — так обязательно даже. Сколько у нас из-за этого "да не парься, найдём если что кто забыл запустить" косяков было — пальцев не хватит.

IT>MSBuild всё равно не запускает перегенерацию шаблонов. И не надо.

https://www.nuget.org/packages/Clarius.TransformOnBuild/

Там только targets-файл. Подробности — тынц.
С appveyor вроде бы пашет.
Отредактировано 03.04.2016 7:09 Sinix . Предыдущая версия .
Re[2]: А кто у нас по T4 спец?
От: Sinix  
Дата: 03.04.16 10:39
Оценка:
Здравствуйте, xy012111, Вы писали:

X>tangible T4 Editor 2.3.0 plus modeling tools for VS 2015 Моделинг тулз в инсталяторе можно отключить, менюшку свою вроде добавляет но так ни разу не понадобилось.

Угу, вот он и стоит в итоге.
Re[5]: А кто у нас по T4 спец?
От: IT Россия linq2db.com
Дата: 03.04.16 18:12
Оценка: 36 (1)
Здравствуйте, Sinix, Вы писали:

S>Т.е. решение теперь тоже одноразовое, но в другом смысле: для нового класса ассертов придётся не просто копировать шаблон, а ещё и менять в нём код


Похоже мы друг друга не поняли. Я решал такую задачу. Взять произвольный файл и произвести с ним заданные трансформации. Твоя задача как я понял другая. Каждой бабе по бутылке водки Каждому файлу по его Debug версии. Исправляюсь.

Кстати, про using static CodeJam.DebugCode не понял. Оно там всё равно нигде не используется.
Если нам не помогут, то мы тоже никого не пощадим.
Re[13]: А кто у нас по T4 спец?
От: rameel https://github.com/rsdn/CodeJam
Дата: 03.04.16 18:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>В результате у меня периодически студия начинала орать на не те концы строк. Так что лучше уж для определенных расширений пусть оно принудительно перетаптывает, причем у всех.


Может кто клонирует заново репозиторий? Гит в этом случае обновит все файлы и исправит концы строк, а потом закомитит изменения. А то сейчас многие файлы вместо нужных изменений содержат еще и изменения по переводу концов строк Плюс это сильно мешает слиянию и приводит к конфликтам.

Сейчас там 40 файлов такие.

ЗЫ. Можно просто удадить все файлы в рабочей директории, а потом сделать git checkout .
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[6]: А кто у нас по T4 спец?
От: Sinix  
Дата: 03.04.16 18:59
Оценка:
Здравствуйте, IT, Вы писали:

IT>Похоже мы друг друга не поняли.

Ага, в n-й раз налезаю на всё те же грабли: коммит кода без объяснений Дальше буду issues гитхаба заводить, хотя бы чиста для истории.

UPD: Коммент к коммиту
UPD2: А можно в ReplaceInfo прикрутить bool FailIfNotFound? А то одна возможность накосячить всё-таки осталась неприкрытой

IT>Кстати, про using static CodeJam.DebugCode не понял. Оно там всё равно нигде не используется.

AndrewVK выше предложил.

Чтоб в других классах отладочных ассертов писать
[Conditional(DebugCondition), DebuggerHidden, MethodImpl(PlatformDependent.AggressiveInlining)]
а не
[Conditional(DebugCode.DebugCondition), DebuggerHidden, MethodImpl(PlatformDependent.AggressiveInlining)]

Заодно сейчас в оригинальном классе для PlatformDependent тоже using static сделаю. Аж забавно, как легко можно упустить очевидные моменты
Отредактировано 03.04.2016 19:11 Sinix . Предыдущая версия . Еще …
Отредактировано 03.04.2016 19:05 Sinix . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.