Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.02.10 02:02
Оценка:
Всем привет.

Добавил реализацию
Автор: Aen Sidhe
Дата: 23.05.08
макроса генерирующего обертку для ресурсных файлов реализованную Aen Sidhe-ом.

Для ее корректной поддержки в Интеграции пришлось так же добавить:
1. Параметр компилятора /project-path:коревой-каталог-проекта и соответствующий ключ MSBuild task — ProjectPath.
2. Параметр компилятора /root-namespace:имя-главного-пространства-имен и соответствующий ключ MSBuild task — RootNamespace.
3. Обновление дерева типов при записи ресурсных файлов.

Использование очень простой:
1. В любой файл проекта помещаем атрибут:
[assembly: Nemerle.Macro.Resource("ИмяФайла.resx")]

2. Добавить в корень проекта ресурсный файл формата .resx с именем совпадающим с именем указанным в атрибуте на предыдущем шаге.
3. Заполнить и записать ресурсный файл.
4. Использовать модуль ИмяФайла (т.е. указанное в атрибуте и совпадающее с именем файла) в нужном участке кода. Для каждого имени ресурсного файла будет добавлено свойство с таким же именем.

Пункты 3-4 можно повторять по вкусу.

В проекты типа Windows Application, Wpf Application и Console Application в файл AssemblyInfo.n добавлен атрибут:
[assembly: Nemerle.Macro.Resource("Resources.resx")]

так что если добавить в проект файл Resources.resx, то он автоматически подхватится. Файл с таким именем создается VS автоматически, если в свойствах проекта выбрать закладку Resources и нажать там ссылку "создать дефолтный ресусный файл что-то-там...". Именно по этому отсутствие Resources.resx игнорируется макросом. В ином случае будет выдаваться сообщение об ошибке.

Просьба потестировать функциональность.

Если кто-то опишет макрос в вики — я буду очень признателен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 09.02.10 07:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Всем привет.

VD>Добавил реализацию
Автор: Aen Sidhe
Дата: 23.05.08
макроса генерирующего обертку для ресурсных файлов реализованную Aen Sidhe-ом.


nemerle-debug-rev8510-02092010
NemerleStudio.exe Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна....
Может я не оттуда беру ( http://aivar.spb.ru/nemerle/ )
Работает с формами кстати и 8479ая но приходится каждый раз праить дизайнер руками, где взять новую ? или я что-то не так делаю ?
Радуют новости о бете скорей бы.
п.с. Привет rsdn , теперь я вас достану
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[2]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.02.10 12:48
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>Может я не оттуда беру ( http://aivar.spb.ru/nemerle/ )


Это не официальные сборки. По видимому в них есть какие-то проблемы.

S>где взять новую ?


Собрать самому по инструкции отсюда
Автор(ы):
, или ждать пока появится соответствующий инсталлятор.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 09.02.10 12:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>По видимому в них есть какие-то проблемы.


видимо да... Кстати ещё вопрос с работой с ASP.NET , Очень уж не удобно вручную все aspx кидать и на них наыязывать классы
Это монотонные операции , может быть это возможно реализовать до беты ?
(ну если конечно уже не починили)
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[4]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 09.02.10 14:05
Оценка: 3 (1)
Здравствуйте, Schrodinger, Вы писали:

S>Это монотонные операции , может быть это возможно реализовать до беты ?

S>(ну если конечно уже не починили)

У меня просто нет времени. Присоединяйся, и помоги. Советами я помогу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 10.02.10 05:10
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>У меня просто нет времени. Присоединяйся, и помоги.


С радостью. Но я не так быстро смогу внедриться в проект. Надо разобраться будет как что и где + у меня тоже не уйма времени.

VD>Советами я помогу.


Куда копать ?
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[6]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 06:09
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>С радостью. Но я не так быстро смогу внедриться в проект. Надо разобраться будет как что и где + у меня тоже не уйма времени.


Чем могу готов помочь.

S>Куда копать ?


Лучше всего по Skype-у это дело обсудить.

Если в двух словах, то есть единственная доступная хоть как-то работающая реализация — это реализация в IronPython. Нужно начать с ее изучения. Тот код что есть в проекте сейчас — это попытка перенести код из IronPython.

Первым же шагом должна стать сборка компилятора и интеграции в отладочном режиме из исходников. О том как это сделать подробно написано здесь
Автор(ы):
.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 10.02.10 06:23
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>видимо да... Кстати ещё вопрос с работой с ASP.NET , Очень уж не удобно вручную все aspx кидать и на них наыязывать классы

S>Это монотонные операции , может быть это возможно реализовать до беты ?
S>(ну если конечно уже не починили)

Если имеется ввиду возможность создания aspx страниц по шаблону через меню Add New Item, то я вроде разобрался как это сделать. Займусь этим в ближайшее время. А вот с поддержкой дизайнера для aspx страниц туго — сейчас дизайнер при попытке сгенерить серверный код выдает ошибку "Generation of designer file failed: The language for this file does not support the necessary code parsing and generation services. Please ensure the file you are opening is a member of a project and then try to open the file again" и куда копать пока неизвестно.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[7]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 10.02.10 06:43
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Первым же шагом должна стать сборка компилятора и интеграции в отладочном режиме из исходников. О том как это сделать подробно написано здесь
Автор(ы):
.


Ну это уже проходили Как-нибудь пересоберу

VD>Если в двух словах, то есть единственная доступная хоть как-то работающая реализация — это реализация в IronPython. Нужно начать с ее изучения. Тот код что есть в проекте сейчас — это попытка перенести код из IronPython.


Я не знаю питон Хотя его и хвалят все... может и стоит это дело опробовать

VD>Лучше всего по Skype-у это дело обсудить.


как-нибудь вышлю свой скайп нп мейл, особенно если дело пойдёт, не сегодня
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[5]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 10.02.10 06:47
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Если имеется ввиду возможность создания aspx страниц по шаблону через меню Add New Item, то я вроде разобрался как это сделать. Займусь этим в ближайшее время. А вот с поддержкой дизайнера для aspx страниц туго — сейчас дизайнер при попытке сгенерить серверный код выдает ошибку "Generation of designer file failed: The language for this file does not support the necessary code parsing and generation services. Please ensure the file you are opening is a member of a project and then try to open the file again" и куда копать пока неизвестно.


Дизайнер работал (С интеграцией, (к сожалению Я сейчас импользую Немерле студию) )
И да — я про добавление New Item и не только aspx, хорошо бы ещё и всякие другие штуки.
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[5]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 06:49
Оценка:
Здравствуйте, seregaa, Вы писали:

S> А вот с поддержкой дизайнера для aspx страниц туго — сейчас дизайнер при попытке сгенерить серверный код выдает ошибку "Generation of designer file failed: The language for this file does not support the necessary code parsing and generation services. Please ensure the file you are opening is a member of a project and then try to open the file again" и куда копать пока неизвестно.


По этому поводу можно сделать следущее.
1. Попытаться разобраться что не так путем перехвата исключений.
2. Попытаться обратиться знакомым из МС. Может они намекнут куда копать. Но об этом лучше по скйпу ил мылу.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 10.02.10 06:59
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>Дизайнер работал (С интеграцией, (к сожалению Я сейчас импользую Немерле студию) )

Он и сейчас работает — можно на форму контролов накидать и мышкой настроить их свойства. Но серверный код (тот, что в *.aspx.designer.n) не сгенерируется — дизайнер ругнется на отстутствие поддержки каких то фич со стороны интеграции. И по двойному клику по контролу для него не будет создан серверный обработчик onclick. Эти ошибки я и имел ввиду.

S>И да — я про добавление New Item и не только aspx, хорошо бы ещё и всякие другие штуки.

Другие — это какие?
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[7]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 10.02.10 07:10
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Другие — это какие?

да ну все те, что в шарпе есть :
asax, svc, ashx ...
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[6]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 07:17
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>Дизайнер работал (С интеграцией, (к сожалению Я сейчас импользую Немерле студию) )


Вот чего не помню, того не помню. Зато помню, что и раньше, и сейчас многие жаловались на невозможность его использования.

S>И да — я про добавление New Item и не только aspx, хорошо бы ещё и всякие другие штуки.


Речь о шаблонах файлов? Их добавить совсем не сложно. Они находится в каталоге Templates. Нужно просто добавить туда (в подкаталоги соответствующих проектов) необходимые файлы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 07:19
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>да ну все те, что в шарпе есть :

S>asax, svc, ashx ...

Ну, так вытащите их из шарпа, поправьте и положите в нужны подкаталоги немерла.

ЗЫ

Времени остается мало. Так что если хотите разобраться с АСП и т.п. до релиза, то нужно поторопиться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 10.02.10 07:54
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Речь о шаблонах файлов? Их добавить совсем не сложно. Они находится в каталоге Templates. Нужно просто добавить туда (в подкаталоги соответствующих проектов) необходимые файлы.


Как оказалось мало просто добавить, нужно еще и установить для файлов Build Action = "ZipItem". И еще выяснилось, что функция TryFindParentFileNode, используемая для выстраивания иерархии подчиненных файлов, не работает для большинства типов файлов, включая aspx, asmx, xaml и т.д. Функция была заточена под windows form layout:
// + — form.n
// | + — form.designer.n

а для большинства файлов используется другая схема:
// + — page.aspx
// | + — page.aspx.n
// | + — page.aspx.designer.n

Я сейчас переписываю эту функцию так, чтобы она сначала пыталась определить родителя с учетом стандартной схемы, а при неуспешной попытке — с учетом схемы, применяемой для windows forms.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[7]: Новая фича (надеюсь, последняя) - макрос Resource
От: Schrodinger Россия funtoo.org
Дата: 10.02.10 07:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Речь о шаблонах файлов? Их добавить совсем не сложно. Они находится в каталоге Templates. Нужно просто добавить туда (в подкаталоги соответствующих проектов) необходимые файлы.


Нужно
А сколько у нас времени ?..
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[8]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 09:44
Оценка:
Здравствуйте, seregaa, Вы писали:

S>// + — form.n

S>// | + — form.designer.n

S>а для большинства файлов используется другая схема:

S>// + — page.aspx
S>// | + — page.aspx.n
S>// | + — page.aspx.designer.n

S>Я сейчас переписываю эту функцию так, чтобы она сначала пыталась определить родителя с учетом стандартной схемы, а при неуспешной попытке — с учетом схемы, применяемой для windows forms.


Мне кажется, что выьФормсовый случай — это частный случай общей схемы. Так что можно попытаться написать единый универсальный код.

Еще, кстати, нужно проверить переименовывыются ли зависимые файлы при переименовании главного.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 10.02.10 09:52
Оценка:
Здравствуйте, Schrodinger, Вы писали:

S>Нужно

S>А сколько у нас времени ?..

Недели две.

Но в принципе могу не удалять все это дело на перод бэтастадии.
Далее уже прийдется выбросить все не рабочее.
Но никто не мешает создать брэнч в SVNnе и делать все потихонечку. Как сделоете, сольем с основной веткой. Ну и выпустим версию 1.1.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 10.02.10 20:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Времени остается мало. Так что если хотите разобраться с АСП и т.п. до релиза, то нужно поторопиться.


done (ревизия 8517).
Добавил следующие шаблоны:
Handler
MasterPage
WebForm
ContentPage
WebService
WebUserControl

Для ContentPage в c# вызывается визард, позволяющий выбрать master page для новой формы. Добиться вызова этого визарда в nemerle не удалось, поэтому имя мастер-страницы нужно прописывать руками — но это имхо совсем мелочь.

С визардами такая ситауция: Эти визарды используются при создании новых файлов для получения от пользователя дополнительных параметров. Например при создании Content Page так запрашиватся имя мастер-страницы. Еще они используются для динамического формирования контента, например для ContentPage формируются плейсхолдеры <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> в зависимости от используемой мастер-страницы.

Хотя я скопировал ссылку на класс визарда из шаблона c# один-к-одному, в немерле визард не вызвался. Зато я заметил, что студия попыталась спросить у интеграции значение свойства DesignTimeReferences для добавляемого файла, но такое свойство в интеграции не реализовано. Возможно что неудача с запуском визардов вызвана отсутствием реализации этого свойства. Я попытался найти способ реализации, но гугление к результату не привело. Копание в рефлекторе показало, что студя ожидает коллекцию, реализующую интерфейс VSLangProj.References, способа создать такую коллекцию я пока не нашел (((

Из за этой проблемы пришлось немного переделать шаблоны, взятые от c# — убрал из них параметры, конфигурируемые визардами. Такие параметры придется прописывать руками. Но таких параметров немного, по моему только имя мастер-страницы да плейсхолдеры.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.