макроса генерирующего обертку для ресурсных файлов реализованную Aen Sidhe-ом.
Для ее корректной поддержки в Интеграции пришлось так же добавить:
1. Параметр компилятора /project-path:коревой-каталог-проекта и соответствующий ключ MSBuild task — ProjectPath.
2. Параметр компилятора /root-namespace:имя-главного-пространства-имен и соответствующий ключ MSBuild task — RootNamespace.
3. Обновление дерева типов при записи ресурсных файлов.
Использование очень простой:
1. В любой файл проекта помещаем атрибут:
2. Добавить в корень проекта ресурсный файл формата .resx с именем совпадающим с именем указанным в атрибуте на предыдущем шаге.
3. Заполнить и записать ресурсный файл.
4. Использовать модуль ИмяФайла (т.е. указанное в атрибуте и совпадающее с именем файла) в нужном участке кода. Для каждого имени ресурсного файла будет добавлено свойство с таким же именем.
Пункты 3-4 можно повторять по вкусу.
В проекты типа Windows Application, Wpf Application и Console Application в файл AssemblyInfo.n добавлен атрибут:
так что если добавить в проект файл Resources.resx, то он автоматически подхватится. Файл с таким именем создается VS автоматически, если в свойствах проекта выбрать закладку Resources и нажать там ссылку "создать дефолтный ресусный файл что-то-там...". Именно по этому отсутствие Resources.resx игнорируется макросом. В ином случае будет выдаваться сообщение об ошибке.
Просьба потестировать функциональность.
Если кто-то опишет макрос в вики — я буду очень признателен.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Новая фича (надеюсь, последняя) - макрос Resource
макроса генерирующего обертку для ресурсных файлов реализованную Aen Sidhe-ом.
nemerle-debug-rev8510-02092010
NemerleStudio.exe Не удалось запустить приложение, поскольку его параллельная конфигурация неправильна....
Может я не оттуда беру ( http://aivar.spb.ru/nemerle/ )
Работает с формами кстати и 8479ая но приходится каждый раз праить дизайнер руками, где взять новую ? или я что-то не так делаю ?
Радуют новости о бете скорей бы.
п.с. Привет rsdn , теперь я вас достану
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[2]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, VladD2, Вы писали:
VD>По видимому в них есть какие-то проблемы.
видимо да... Кстати ещё вопрос с работой с ASP.NET , Очень уж не удобно вручную все aspx кидать и на них наыязывать классы
Это монотонные операции , может быть это возможно реализовать до беты ?
(ну если конечно уже не починили)
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[4]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, VladD2, Вы писали:
VD>У меня просто нет времени. Присоединяйся, и помоги.
С радостью. Но я не так быстро смогу внедриться в проект. Надо разобраться будет как что и где + у меня тоже не уйма времени.
VD>Советами я помогу.
Куда копать ?
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[6]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, Schrodinger, Вы писали:
S>С радостью. Но я не так быстро смогу внедриться в проект. Надо разобраться будет как что и где + у меня тоже не уйма времени.
Чем могу готов помочь.
S>Куда копать ?
Лучше всего по Skype-у это дело обсудить.
Если в двух словах, то есть единственная доступная хоть как-то работающая реализация — это реализация в IronPython. Нужно начать с ее изучения. Тот код что есть в проекте сейчас — это попытка перенести код из IronPython.
Первым же шагом должна стать сборка компилятора и интеграции в отладочном режиме из исходников. О том как это сделать подробно написано здесь
Здравствуйте, 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" и куда копать пока неизвестно.
Здравствуйте, VladD2, Вы писали:
VD>Первым же шагом должна стать сборка компилятора и интеграции в отладочном режиме из исходников. О том как это сделать подробно написано здесь
Ну это уже проходили Как-нибудь пересоберу
VD>Если в двух словах, то есть единственная доступная хоть как-то работающая реализация — это реализация в IronPython. Нужно начать с ее изучения. Тот код что есть в проекте сейчас — это попытка перенести код из IronPython.
Я не знаю питон Хотя его и хвалят все... может и стоит это дело опробовать
VD>Лучше всего по Skype-у это дело обсудить.
как-нибудь вышлю свой скайп нп мейл, особенно если дело пойдёт, не сегодня
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[5]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, 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
Здравствуйте, 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
Здравствуйте, Schrodinger, Вы писали:
S>Дизайнер работал (С интеграцией, (к сожалению Я сейчас импользую Немерле студию) )
Он и сейчас работает — можно на форму контролов накидать и мышкой настроить их свойства. Но серверный код (тот, что в *.aspx.designer.n) не сгенерируется — дизайнер ругнется на отстутствие поддержки каких то фич со стороны интеграции. И по двойному клику по контролу для него не будет создан серверный обработчик onclick. Эти ошибки я и имел ввиду.
S>И да — я про добавление New Item и не только aspx, хорошо бы ещё и всякие другие штуки.
Другие — это какие?
Здравствуйте, seregaa, Вы писали:
S>Другие — это какие?
да ну все те, что в шарпе есть :
asax, svc, ashx ...
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[6]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, Schrodinger, Вы писали:
S>Дизайнер работал (С интеграцией, (к сожалению Я сейчас импользую Немерле студию) )
Вот чего не помню, того не помню. Зато помню, что и раньше, и сейчас многие жаловались на невозможность его использования.
S>И да — я про добавление New Item и не только aspx, хорошо бы ещё и всякие другие штуки.
Речь о шаблонах файлов? Их добавить совсем не сложно. Они находится в каталоге Templates. Нужно просто добавить туда (в подкаталоги соответствующих проектов) необходимые файлы.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, 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.
Здравствуйте, VladD2, Вы писали:
VD>Речь о шаблонах файлов? Их добавить совсем не сложно. Они находится в каталоге Templates. Нужно просто добавить туда (в подкаталоги соответствующих проектов) необходимые файлы.
Нужно
А сколько у нас времени ?..
الحقيقة:الشئ الوحيد الذي(لا)يصدقه الناس!ا الزواج : جمع.وطرح.ثم(ضرب)!ولكنه قبل ذلك(قسمة) المحامي:لسان.وحنجرة.وروب!يدافع عن مال موكله (أعزائي)!وهو لا يعرف أحد منّا!الطالب (الأول)على فصله!لولا وجود الأخرين
Re[8]: Новая фича (надеюсь, последняя) - макрос Resource
Здравствуйте, 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
Здравствуйте, Schrodinger, Вы писали:
S>Нужно S>А сколько у нас времени ?..
Недели две.
Но в принципе могу не удалять все это дело на перод бэтастадии.
Далее уже прийдется выбросить все не рабочее.
Но никто не мешает создать брэнч в SVNnе и делать все потихонечку. Как сделоете, сольем с основной веткой. Ну и выпустим версию 1.1.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Новая фича (надеюсь, последняя) - макрос Resource
Для ContentPage в c# вызывается визард, позволяющий выбрать master page для новой формы. Добиться вызова этого визарда в nemerle не удалось, поэтому имя мастер-страницы нужно прописывать руками — но это имхо совсем мелочь.
С визардами такая ситауция: Эти визарды используются при создании новых файлов для получения от пользователя дополнительных параметров. Например при создании Content Page так запрашиватся имя мастер-страницы. Еще они используются для динамического формирования контента, например для ContentPage формируются плейсхолдеры <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server"> в зависимости от используемой мастер-страницы.
Хотя я скопировал ссылку на класс визарда из шаблона c# один-к-одному, в немерле визард не вызвался. Зато я заметил, что студия попыталась спросить у интеграции значение свойства DesignTimeReferences для добавляемого файла, но такое свойство в интеграции не реализовано. Возможно что неудача с запуском визардов вызвана отсутствием реализации этого свойства. Я попытался найти способ реализации, но гугление к результату не привело. Копание в рефлекторе показало, что студя ожидает коллекцию, реализующую интерфейс VSLangProj.References, способа создать такую коллекцию я пока не нашел (((
Из за этой проблемы пришлось немного переделать шаблоны, взятые от c# — убрал из них параметры, конфигурируемые визардами. Такие параметры придется прописывать руками. Но таких параметров немного, по моему только имя мастер-страницы да плейсхолдеры.