Вобщем 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. На диск с использованием отдельного процесса.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.