Re[10]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.02.10 09:11
Оценка:
Здравствуйте, seregaa, Вы писали:

S>Для ContentPage в c# вызывается визард, позволяющий выбрать master page для новой формы. Добиться вызова этого визарда в nemerle не удалось,


А в чем проблема?

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


Скорее всего речь идет об атомэшон свойствах. References — это скорее всего стандартное свойство.
Попробуй порыть в сторону:
NemerleOAReferenceFolderItem.cs, NemerleReferenceContainerNode.cs и самих веток отражающих референсы — классы наследники AssemblyReferenceNode (NemerleAssemblyReferenceNode, NemerleProjectReferenceNode). Скорее всего сама коллекция уже нет, но она не поддерживает данный тип ссылки. Так что видимо нужно создать новый класс наследник AssemblyReferenceNode.

Ты смотрел пример IronPython-интеграции? Там с большой вероятностью поддержка АСП реализована. Правда, как и все остальное, реализовано там халтурно и на очень начальном уровне. Но куда копать должно быть понятно.

S>Из за этой проблемы пришлось немного переделать шаблоны, взятые от c# — убрал из них параметры, конфигурируемые визардами. Такие параметры придется прописывать руками. Но таких параметров немного, по моему только имя мастер-страницы да плейсхолдеры.


А это не вызвает проблем при использовании?

И вообще, веб-проекты работают? В каком виде сейчас все это?
Потом как я понимаю речь идет о веб-формсах. Но на сегодня более катуальными является MVC. Он то поддерживается?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Новая фича (надеюсь, последняя) - макрос Resource
От: jenyavb  
Дата: 11.02.10 09:20
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>В проекты типа Windows Application, Wpf Application и Console Application в файл AssemblyInfo.n добавлен атрибут:

VD>
VD>[assembly: Nemerle.Macro.Resource("Resources.resx")]
VD>

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

А почему бы не создавать на каждый ресурсный файл, для которого нужна обертка, файл где и размещать этот атрибут? Примерно как это делается в шарповских проектах с генерируемой оберткой. Так и вышеприведенный костыль не понадобится, и будет похоже на поведение шарпа, и можно будет вручную не объявлять этот атрибут. И вопросов меньше будет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1439>>
Re[2]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.02.10 09:28
Оценка:
Здравствуйте, jenyavb, Вы писали:

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


Хотя бы из того соображения, что — это бессмысленно.

Что даст заведение какого-то левого файла? Реагировать нужно на изменение другого (например, ресурсного) фала. Атрибут может находиться где угодно. Это ни на что не влияет.

Аналогии с шарпом тут вообще не уместны. Нет никаких внешних генераторов. Все что нужно делает макрос. Во время сборки макрос отрабатывает в штатном режиме. Проблема возникает только когда кто-то меняет некий файл не относящийся к коду (например, ресурсный). Интеграция просто не знает, что макрос как-то завязан на этот файл.

Собственно задача и стоит в том чтобы найти наиболее удобный способ связать изменение сторонних файлов с работой макросов.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Новая фича (надеюсь, последняя) - макрос Resource
От: hardcase Пират http://nemerle.org
Дата: 11.02.10 12:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>И вообще, веб-проекты работают? В каком виде сейчас все это?

VD>Потом как я понимаю речь идет о веб-формсах. Но на сегодня более катуальными является MVC. Он то поддерживается?

Я заводил немерл под ASP.NET MVC 1.0. Сводилось все сводилось к настройке компилятора и добавлению ссылок в web.config, а также исправлению nproj файла по аналогии с C#-овым MVC-проектом. Под IISом работало.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[12]: Новая фича (надеюсь, последняя) - макрос Resource
От: VladD2 Российская Империя www.nemerle.org
Дата: 11.02.10 12:53
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Я заводил немерл под ASP.NET MVC 1.0. Сводилось все сводилось к настройке компилятора и добавлению ссылок в web.config, а также исправлению nproj файла по аналогии с C#-овым MVC-проектом. Под IISом работало.


Так может быть в первую очередь добавить именно его поддержку?

По словам знатных сабакоедов ASP.NET MVC более перспективная библиотека.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 11.02.10 13:19
Оценка:
Здравствуйте, VladD2, Вы писали:

H>>Я заводил немерл под ASP.NET MVC 1.0. Сводилось все сводилось к настройке компилятора и добавлению ссылок в web.config, а также исправлению nproj файла по аналогии с C#-овым MVC-проектом. Под IISом работало.

Поддержка MVC в процессе. Шаблон проекта готов, осталось добавить шаблоны отдельных элементов — контроллеров и представлений.

VD>Так может быть в первую очередь добавить именно его поддержку?

VD>По словам знатных сабакоедов ASP.NET MVC более перспективная библиотека.
Да, более перспективная. Но шаблон веб-формс проекта уже был в интеграции, поэтому начал с него. Тем более народ веб формы все еще использует.
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[11]: Новая фича (надеюсь, последняя) - макрос Resource
От: seregaa Ниоткуда http://blogtani.ru
Дата: 11.02.10 13:32
Оценка: 43 (1)
Здравствуйте, VladD2, Вы писали:

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


VD>Скорее всего речь идет об атомэшон свойствах. References — это скорее всего стандартное свойство.

VD>Попробуй порыть в сторону:
Да, нашел подходящее свойство у OAVSProject-а и вывести его в NemerleProjectNodeProperties. Но это не помогло. Пришлось основательно засесть за рефлектор. Оказалось, что aspx дизайнер создает CodeDomProvider для языков, отличных от c# и VB самостоятельно, а не запрашивает его у интеграции. Создает он его по названию типа, прописанному в реестре:
    CodeDomProvider generatorProvider = null;
    if (guid3.Equals(o))
    {
        generatorProvider = new CSharpCodeProvider();
    }
    else if (guid3.Equals(guid2))
    {
        generatorProvider = new VBCodeProvider();
    }
    else
    {
        generatorProvider = this.CreateProviderFromRegistry(guid3);
    }
    if (generatorProvider == null)
    {
        throw new NotSupportedException(SR.GetString("DESIGNERLOADERNoLanguageSupport"));
    }
    return new VSMDCodeDomProvider(new VsCodeDomProvider(this, projectItem, generatorProvider));


Прописал в реестре значение
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0Exp\Configuration\Projects\{edcc3b85-0bad-11db-bc1a-00112fde8b61}\CodeDomProvider = "Nemerle.Compiler.Utils.NemerleCodeDomProvider, Nemerle.Compiler.Utils"

После этого перестал появляться ворнинг "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
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.