Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 19.04.10 17:51
Оценка:
Общая задача такова, на этапе компиляции генерируется несколько файликов, которые должны быть внедрены в итоговую сборку.
Вопрос такой. Можно ли из макроса каким-то образом добавить к проекту файлы на этапе компиляции? Я пока вижу вариант тупой вставки в xml проекта.
Re: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 17:54
Оценка:
Здравствуйте, evilbeaver, Вы писали:

E>Общая задача такова, на этапе компиляции генерируется несколько файликов, которые должны быть внедрены в итоговую сборку.

E>Вопрос такой. Можно ли из макроса каким-то образом добавить к проекту файлы на этапе компиляции?

Нет.

E>Я пока вижу вариант тупой вставки в xml проекта.


Это тоже не поможет. Файл проекта не перечитывается во время компиляции. Данные изменения будут доступны только при повторной компиляции. При этом студия будет выдавать запрос на переоткрытие проекта.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 17:54
Оценка:
Здравствуйте, evilbeaver, Вы писали:

E>Общая задача такова, на этапе компиляции генерируется несколько файликов, которые должны быть внедрены в итоговую сборку.

E>Вопрос такой. Можно ли из макроса каким-то образом добавить к проекту файлы на этапе компиляции? Я пока вижу вариант тупой вставки в xml проекта.

А что за файлы? И зачем их в проект добавлять?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 19.04.10 18:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, evilbeaver, Вы писали:


E>>Общая задача такова, на этапе компиляции генерируется несколько файликов, которые должны быть внедрены в итоговую сборку.

E>>Вопрос такой. Можно ли из макроса каким-то образом добавить к проекту файлы на этапе компиляции? Я пока вижу вариант тупой вставки в xml проекта.

VD>А что за файлы? И зачем их в проект добавлять?


маппинги nhibernate. Тогда вопрос такой. Не добавляя их в проект можно ли внедрить их как ресурсы в сборку?
Re[3]: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 18:57
Оценка:
Здравствуйте, evilbeaver, Вы писали:

E>маппинги nhibernate. Тогда вопрос такой. Не добавляя их в проект можно ли внедрить их как ресурсы в сборку?


Ну, в принципе можно попытаться добавит опции командной строки из макроса. Не знаю подцепит ли компилятор их на лету. Возможно подцепт.

Но почему не добавить их явно в список ресурсов?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Добавление файлов к проекту на этапе компиляции
От: hardcase Пират http://nemerle.org
Дата: 19.04.10 18:59
Оценка:
Здравствуйте, evilbeaver, Вы писали:


E>маппинги nhibernate. Тогда вопрос такой. Не добавляя их в проект можно ли внедрить их как ресурсы в сборку?


Видимо так:

def typer = Macros.ImplicitCTX();
typer.Manager.Options.EmbeddedResources ::= "MyFile.resx"
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Добавление файлов к проекту на этапе компиляции
От: hardcase Пират http://nemerle.org
Дата: 19.04.10 19:06
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Но почему не добавить их явно в список ресурсов?


А они видимо макросом хитровывернуто изготавливаются.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 19.04.10 19:16
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, VladD2, Вы писали:


VD>>Но почему не добавить их явно в список ресурсов?


H>А они видимо макросом хитровывернуто изготавливаются.


Вы угадали
Re[4]: Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 19.04.10 19:17
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, evilbeaver, Вы писали:



E>>маппинги nhibernate. Тогда вопрос такой. Не добавляя их в проект можно ли внедрить их как ресурсы в сборку?


H>Видимо так:


H>
H>def typer = Macros.ImplicitCTX();
H>typer.Manager.Options.EmbeddedResources ::= "MyFile.resx"
H>


Спасибо за наводку, попробую так сделать. Правильно ли я понял, что здесь в качестве имени файла указывается путь относительно самого файла проекта?
Re[5]: Добавление файлов к проекту на этапе компиляции
От: hardcase Пират http://nemerle.org
Дата: 19.04.10 19:19
Оценка:
Здравствуйте, evilbeaver, Вы писали:


E>Спасибо за наводку, попробую так сделать. Правильно ли я понял, что здесь в качестве имени файла указывается путь относительно самого файла проекта?


Хмм это скорее путь относительно текущего рабочего каталога ncc.exe.
Путь к проекту лежит тут:
typer.Manager.Options.ProjectPath
/* иЗвиНите зА неРовнЫй поЧерК */
Re[5]: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 19:56
Оценка:
Здравствуйте, evilbeaver, Вы писали:

H>>
H>>def typer = Macros.ImplicitCTX();
H>>typer.Manager.Options.EmbeddedResources ::= "MyFile.resx"
H>>


E>Спасибо за наводку, попробую так сделать. Правильно ли я понял, что здесь в качестве имени файла указывается путь относительно самого файла проекта?


Нет. Здесь лучше иметь полный путь. Иначе он скорее всего будет рассматириваться относительно текущего каталога компилятора (а это может быть любой каталог).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 19.04.10 19:57
Оценка:
Здравствуйте, VladD2, Вы писали:

H>>>
H>>>def typer = Macros.ImplicitCTX();
H>>>typer.Manager.Options.EmbeddedResources ::= "MyFile.resx"
H>>>


Кстати, в режиме интеграции макросы могут запускаться много раз, так что нужно проверять нел ли в списке такого файл.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Добавление файлов к проекту на этапе компиляции
От: hardcase Пират http://nemerle.org
Дата: 19.04.10 20:31
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, VladD2, Вы писали:


H>>>>
H>>>>def typer = Macros.ImplicitCTX();
H>>>>typer.Manager.Options.EmbeddedResources ::= "MyFile.resx"
H>>>>


VD>Кстати, в режиме интеграции макросы могут запускаться много раз, так что нужно проверять нел ли в списке такого файл.


Лучше наверно проверять запускаемся ли мы в режиме интеграции — typer.Manager.IsIntelliSenseMode. Если да — то в список ничего не добавлять, так как всеравно сборка не генерируется.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[6]: Добавление файлов к проекту на этапе компиляции
От: Ziaw Россия  
Дата: 20.04.10 05:52
Оценка:
Здравствуйте, evilbeaver, Вы писали:

H>>А они видимо макросом хитровывернуто изготавливаются.


E>Вы угадали


Может быть имеет смысл посмотреть на маппинги через атрибуты? Я так делаю для тулкита.

А не хотите ли сделать nhibernate провайдер для NRails? Достаточно сделать все пару несложных макров по примеру. Его не обязательно использовать в веб проектах.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>
Re[7]: Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 20.04.10 08:19
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, evilbeaver, Вы писали:


H>>>А они видимо макросом хитровывернуто изготавливаются.


E>>Вы угадали


Z>Может быть имеет смысл посмотреть на маппинги через атрибуты? Я так делаю для тулкита.


Через атрибуты данный подход насколько мне известно уже реализован. Но поскольку атрибуты обрабатываются рантайм, то на этапе компиляции у нас все будет отлично. Я же планирую о большинстве ошибок в описании сообщать еще при компиляции.


Z>А не хотите ли сделать nhibernate провайдер для NRails? Достаточно сделать все пару несложных макров по примеру. Его не обязательно использовать в веб проектах.


К сожалению сейчас не так много времени, закончу со своей задачей — постараюсь посмотреть.
Re[8]: Добавление файлов к проекту на этапе компиляции
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.04.10 15:02
Оценка:
Здравствуйте, evilbeaver, Вы писали:

E>Через атрибуты данный подход насколько мне известно уже реализован. Но поскольку атрибуты обрабатываются рантайм, то на этапе компиляции у нас все будет отлично. Я же планирую о большинстве ошибок в описании сообщать еще при компиляции.


Есть же мета-атрибуты. Они как обычные, но вызывают макросы, так что все что нужно можно сделать во время компиляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Добавление файлов к проекту на этапе компиляции
От: Ziaw Россия  
Дата: 20.04.10 15:23
Оценка:
Здравствуйте, evilbeaver, Вы писали:

E>Через атрибуты данный подход насколько мне известно уже реализован. Но поскольку атрибуты обрабатываются рантайм, то на этапе компиляции у нас все будет отлично. Я же планирую о большинстве ошибок в описании сообщать еще при компиляции.


Я про то, что маппинг можно создать в компайл тайме кучей способов. Генерация xml лишь один из них. Можно еще конструировать код создающий метаинформацию вручную, навешивать атрибуты. При этом совершат все те же проверки, что и при генерации xml файлов.
... << RSDN@Home 1.2.0 alpha 4 rev. 1468>>
Re[9]: Добавление файлов к проекту на этапе компиляции
От: evilbeaver  
Дата: 20.04.10 16:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, evilbeaver, Вы писали:


E>>Через атрибуты данный подход насколько мне известно уже реализован. Но поскольку атрибуты обрабатываются рантайм, то на этапе компиляции у нас все будет отлично. Я же планирую о большинстве ошибок в описании сообщать еще при компиляции.


VD>Есть же мета-атрибуты. Они как обычные, но вызывают макросы, так что все что нужно можно сделать во время компиляции.


Метаатрибуты я собственно и использую. То есть классы (и поля) помечаются атрибутами, которые на самом деле макросы.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.