Вобщем npad дошел до той кондиции, когда с ним уже можно работать.
Прошу теста и фидбэка.
Что планирую делать дальше, но уже неспешно: асинхронный запуск кода и возможность его стопнуть да, сейчас синхронно
возможность использовать макросы в примерах
какой-нибудь показ readme к примеру
генерацию экзешника/dll на диск (сейчас собирается в память, осталось понять как указывать во что именно собирать)
Здравствуйте, Ziaw, Вы писали:
Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.
Z>Прошу теста и фидбэка.
Z>Что планирую делать дальше, но уже неспешно: Z> Z> асинхронный запуск кода и возможность его стопнуть да, сейчас синхронно Z> возможность использовать макросы в примерах Z> какой-нибудь показ readme к примеру Z> генерацию экзешника/dll на диск (сейчас собирается в память, осталось понять как указывать во что именно собирать) Z>
При запуске получаю
После нажатия на Run
System.IO.FileNotFoundException: Could not load file or assembly 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101' or one of its dependencies. The system cannot find the file specified.
File name: 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101'
at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
at System.Reflection.Assembly.Load(String assemblyString)
at Nemerle.Compiler.LibraryReferenceManager.assemblyLoad(String name)
at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
at Nemerle.Compiler.ManagerClass.LoadNemerleMacros()
at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
at Nemerle.Compiler.ManagerClass.Run()
at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
at NPad.AppRunner.CompileAndRun(FileInfo file)
at NPad.AppRunner.CompileAndRun(FileInfo file)
at NPad.MainForm.runCode()
WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure logging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
Стартует нормально, но при попытке запустить пример выдаёт:
System.InvalidCastException: Unable to cast object of type 'Nemerle.Internal.OperatorAttribute' to type 'Nemerle.Internal.OperatorAttribute'.
at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(Assembly assembly)
at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
at Nemerle.Compiler.ManagerClass.Run()
at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
at NPad.AppRunner.CompileAndRun(FileInfo file)
at NPad.AppRunner.CompileAndRun(FileInfo file)
at NPad.MainForm.runCode()
Здравствуйте, Ziaw, Вы писали:
Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.
Здравствуйте, igor609, Вы писали:
I>При запуске получаю I>
А nemerle установлен? Какой версии? Если установлен можно указать путь в настройка (File|Settings)
I>После нажатия на Run I>
I>System.IO.FileNotFoundException: Could not load file or assembly 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101' or one of its dependencies. The system cannot find the file specified.
I>File name: 'Nemerle.Macros, Version=1.0.0.9342, Culture=neutral, PublicKeyToken=5291d186334f6101'
I> at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
I> at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)
I> at System.Reflection.Assembly.InternalLoad(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
I> at System.Reflection.Assembly.InternalLoad(String assemblyString, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection)
I> at System.Reflection.Assembly.Load(String assemblyString)
I> at Nemerle.Compiler.LibraryReferenceManager.assemblyLoad(String name)
I> at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
I> at Nemerle.Compiler.ManagerClass.LoadNemerleMacros()
I> at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
I> at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
I> at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
I> at Nemerle.Compiler.ManagerClass.Run()
I> at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
I> at NPad.AppRunner.CompileAndRun(FileInfo file)
I> at NPad.AppRunner.CompileAndRun(FileInfo file)
I> at NPad.MainForm.runCode()
I>WRN: Assembly binding logging is turned OFF.
I>To enable assembly bind failure logging, set the registry value [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) to 1.
I>Note: There is some performance penalty associated with assembly bind failure logging.
I>To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fusion!EnableLog].
I>
Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.
Здравствуйте, Маслаков Михаил, Вы писали:
ММ>Стартует нормально, но при попытке запустить пример выдаёт:
ММ>
ММ>System.InvalidCastException: Unable to cast object of type 'Nemerle.Internal.OperatorAttribute' to type 'Nemerle.Internal.OperatorAttribute'.
ММ> at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(Assembly assembly)
ММ> at Nemerle.Compiler.LibraryReferenceManager.LoadMacrosFrom(String name, String strongPart)
ММ> at Nemerle.Compiler.ManagerClass._N__N_lambda__24273__24379.apply_void()
ММ> at Nemerle.Compiler.ManagerClass._N_tryEx_24296(_N_closure_24280 _N_LoadExternalLibraries_cp_24295, FunctionVoid f)
ММ> at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
ММ> at Nemerle.Compiler.ManagerClass.Run()
ММ> at NPad.ManagedCompiler.Compile(FileInfo fileName, TextWriter log)
ММ> at NPad.AppRunner.CompileAndRun(FileInfo file)
ММ> at NPad.AppRunner.CompileAndRun(FileInfo file)
ММ> at NPad.MainForm.runCode()
ММ>
Скорее всего проблема та же что и у igor609 не совместимость версий немерла. Видимо я зря бинарники выложил, либо к ним надо свой немерл прицепить. А собрать и попробовать можете?
Здравствуйте, Ziaw, Вы писали:
Z>Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.
Немерл у меня не установлен. Как бы это не должно быть препятствием для NPad
Здравствуйте, Ziaw, Вы писали:
Z>Либо нет немерла либо немрл не той версии в которой собран npad (9342). Я пока не знаю как бороться с этим, пусть товарищи подскажут.
Дык в сообщении об ошибке ответ и содержался. Задай в процессе переменную среды окружения Nemerle так чтобы она указывала в каталог где лежит требуемые версии компиляторных сборок.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ziaw, Вы писали:
Z>Скорее всего проблема та же что и у igor609 не совместимость версий немерла. Видимо я зря бинарники выложил, либо к ним надо свой немерл прицепить. А собрать и попробовать можете?
В общем, похоже что баг заключается в том, что ты химичишь с путями плюс не положил в архив сборку Nemerle.Macros.dll. Вместо этой химии нужно просто задать в качестве пути путь где расположен NPad.exe (т.е. где находятся подходящие по версии сборки NPad.exe Nemerle.dll Nemerle.Compiler.dll Nemerle.Macros.dll).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Ziaw, Вы писали:
Z>Вобщем npad дошел до той кондиции, когда с ним уже можно работать.
Z>Прошу теста и фидбэка.
Если выключить компиляцию в домене, затем выбрать в дереве HelloWorld и выполнить его несколько раз, то на второй раз появляется сообщение об ошибке:
error: file 'E:\Libs\NPad\NPad\bin\Debug\Samples\HelloWorld.n' occured twice on the list to compile
а потом иногда возникает сообщение:
System.IO.IOException: Процесс не может получить доступ к файлу "E:\Libs\NPad\NPad\bin\Debug\Samples\HelloWorld.n", так как этот файл используется другим процессом.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Уж если использовать домен, то надо не выгружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.
Так IIS поступает. У него есть пороговое значение количества перекомпиляций aspx файлов.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Ziaw, Вы писали:
VD>Что касается скорости компиляции... Вариант с доменом работает намного медленее нежели запуска ncc.exe в отдельном процессе.
Кинь кодом компилятора в отдельном процессе. VD>Уж если использовать домен, то надо не выружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти.
согласен. но если компилятор работает намного быстрее — нафик этот домен.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, igor609, Вы писали:
I>>Немерл у меня не установлен. Как бы это не должно быть препятствием для NPad
VD>Вообще, планируется что он будет поставляться в составе компилятора. Так что проблем быть не должно.
VD>Но можно сделать и так, чтобы он мог использовать отдельную версию комплятора. Только получается масло масленное.
На работе я не смогу установить компилятор nemerle, а вот с NPad удовольствием бы поигрался.
Здравствуйте, Ziaw, Вы писали:
Z>Кинь кодом компилятора в отдельном процессе.
Проще всего воспользоваться MSBuild Task-ом которым пользуется студия — Nemerle.MSBuild.Tasks.dll.
Исходник лежит здесь: http://nemerle.googlecode.com/svn/nemerle/trunk/tools/msbuild-task/MSBuildTask.cs (на шарпе, так как нужен раньше чем получается скопилированный компилятор, а код прост как три копейки)
VD>>Уж если использовать домен, то надо не выружать его каждый раз, а делать это только изредка, в фоне, для очистки памяти. Z>согласен. но если компилятор работает намного быстрее — нафик этот домен.
Дык можно заменить таким решением то которое сейчас компилирует прямо в рамках того же процесса. Тогда память теряться вообще не будет и скорость будет наивысшая (все же на запуск процесса тратится время).
Получилось бы два варианта:
1. В памяти с периодическим перезапуском домена.
2. На диск с использованием отдельного процесса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, igor609, Вы писали:
I>На работе я не смогу установить компилятор nemerle,
А что этому мешает? Точнее поставим вопрос так — какая разница между установкой и просто запуском из каталога?
I>а вот с NPad удовольствием бы поигрался.
Можно сделать оба варианта. Будем поставлять его и в рамках инсталлятора, и в виде отдельного архива вместе с отдельным компилятором, чтобы можно было "поиграться" в отсутствии полной версии.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, igor609, Вы писали:
I>>На работе я не смогу установить компилятор nemerle,
VD>А что этому мешает? Точнее поставим вопрос так — какая разница между установкой и просто запуском из каталога?
Любые дополнительные инсталляции не связанные конкретно с работой очень не приветствуются политикой фирмы в которой я работаю.
Другое дело, просто ехешник не требующий инсталяции. I>>а вот с NPad удовольствием бы поигрался.
VD>Можно сделать оба варианта. Будем поставлять его и в рамках инсталлятора, и в виде отдельного архива вместе с отдельным компилятором, чтобы можно было "поиграться" в отсутствии полной версии.
Самое мудрое решение сделать так, что-бы NPad был самодостаточным.
Здравствуйте, igor609, Вы писали:
VD>>Можно сделать оба варианта. Будем поставлять его и в рамках инсталлятора, и в виде отдельного архива вместе с отдельным компилятором, чтобы можно было "поиграться" в отсутствии полной версии. I>Самое мудрое решение сделать так, что-бы NPad был самодостаточным.
Ставить его отдельно при наличии полного пакета не очень разумно. Но сделать так чтобы его можно было так же использовать в виде отдельного архива можно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, igor609, Вы писали:
VD>>>Можно сделать оба варианта. Будем поставлять его и в рамках инсталлятора, и в виде отдельного архива вместе с отдельным компилятором, чтобы можно было "поиграться" в отсутствии полной версии. I>>Самое мудрое решение сделать так, что-бы NPad был самодостаточным.
VD>Ставить его отдельно при наличии полного пакета не очень разумно. Но сделать так чтобы его можно было так же использовать в виде отдельного архива можно.
Да ладно, че там, разве жаль мегабайта под сборки? А это освободит от несовпадения версий и необходимости ставить msi.
Здравствуйте, catbert, Вы писали:
VD>>>>Можно сделать оба варианта. Будем поставлять его и в рамках инсталлятора, и в виде отдельного архива вместе с отдельным компилятором, чтобы можно было "поиграться" в отсутствии полной версии. I>>>Самое мудрое решение сделать так, что-бы NPad был самодостаточным.
VD>>Ставить его отдельно при наличии полного пакета не очень разумно. Но сделать так чтобы его можно было так же использовать в виде отдельного архива можно.
C>Да ладно, че там, разве жаль мегабайта под сборки? А это освободит от несовпадения версий и необходимости ставить msi.
Создается впечатление, что ты не внимательно читал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, hardcase, Вы писали:
H>А если убрать VersionSpecific=true из немерловых референсов проекта?
Не поможет, поможет только bindingRedirect в конфиге. Но это не надежно, может стоять совсем древняя версия немерла. Надо просто таскать с собой немерл либо использовать ncc, оба варианта имеют свои плюсы и оба будут реализованы.