Наблюдая баталии дон ки хота(ов) в соседних форумах, решил немного побороться со своей закостенелостью. Вот что из этого вышло:
---------------------------
Nemerle Studio
---------------------------
Das importierte Projekt C:\Programme\Nemerle\Nemerle.MSBuild.targets wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist. C:\Dokumente und Einstellungen\Vladimir\Lokale Einstellungen\Temp\lbxyg1tn.ndx\Temp\ConsoleApplication3.nproj
---------------------------
OK
---------------------------
Ну, видимо, не судьба... Запустил интерпретатор:
Welcome to Nemerle interpreter (using ncc 1.0.0.8745).
Please enter expressions appended with ";;".
Type "Help;;" for more info.
Please wait while evaluating the config file..
— Help;;
Der Typeninitialisierer für Nemerle.Compiler.TyperBase hat eine Ausnahme verursa
cht. bei Nemerle.Compiler.Typer..ctor(ManagerClass mng)
bei Nemerle.Compiler.Typer..ctor(ManagerClass mng, TypeBuilder tb, MethodBuil
der mb)
bei Nemerle.Compiler.Typer..ctor(MethodBuilder m)
bei Nemerle.Compiler.CompilerComponentsFactory.CreateTyper(MethodBuilder m)
bei Nemerle.Compiler.MethodBuilder.RunBodyTyper()
bei Nemerle.Compiler.MethodBuilder.Compile()
bei Nemerle.Compiler.TypeBuilder.EmitImplementation()
bei Nemerle.Compiler.TypesManager._N_emit_impl__53681.apply_void(TypeBuilder
_N__53680)
bei Nemerle.Compiler.TypesManager._N_maybe_f__54248.apply_void(TypeBuilder _N
__54247)
bei Nemerle.Collections.NList.Iter[T](list`1 l, FunctionVoid`1 f)
bei Nemerle.Core.list`1.Iter(FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.Iter(list`1 builders, FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.Iter(FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.compile_all_tyinfos(Boolean aux_phase)
bei Nemerle.Compiler.TypesManager._N__N_lambda__53121__53224.apply_void()
bei Nemerle.Compiler.Solver.Enqueue(FunctionVoid action)
bei Nemerle.Compiler.TypesManager.EmitDecls()
bei Nemerle.Compiler.ManagerClass.Run()
bei Nemerle.Evaluation.Evaluator.Eval(String code)
bei Nemerle.Evaluation.Interpreter.MainClass._N_printev_9740(_N_closure_9629
_N_Main_cp_9739, String c)
System.TypeInitializationException: Der Typeninitialisierer für Nemerle.Compiler
.TyperBase hat eine Ausnahme verursacht. ---> System.Configuration.Configuration
ErrorsException: Das Konfigurationssystem konnte nicht initialisiert werden. --- > System.Configuration.ConfigurationErrorsException: Unbekannter Konfigurationsa
bschnitt "dllmap". (D:\Programme\Nemerle\nemish.exe.config line 2)
bei System.Configuration.ConfigurationSchemaErrors.ThrowIfErrors(Boolean igno
reLocal)
bei System.Configuration.BaseConfigurationRecord.ThrowIfParseErrors(Configura
tionSchemaErrors schemaErrors)
bei System.Configuration.BaseConfigurationRecord.ThrowIfInitErrors()
bei System.Configuration.ClientConfigurationSystem.EnsureInit(String configKe
y)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.Configuration.ClientConfigurationSystem.EnsureInit(String configKe
y)
bei System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(
String sectionName)
bei System.Configuration.ClientConfigurationSystem.System.Configuration.Inter
nal.IInternalConfigSystem.GetSection(String sectionName)
bei System.Configuration.ConfigurationManager.GetSection(String sectionName)
bei System.Configuration.PrivilegedConfigurationManager.GetSection(String sec
tionName)
bei System.Diagnostics.DiagnosticsConfiguration.GetConfigSection()
bei System.Diagnostics.DiagnosticsConfiguration.Initialize()
bei System.Diagnostics.DiagnosticsConfiguration.get_IndentSize()
bei System.Diagnostics.TraceInternal.InitializeSettings()
bei System.Diagnostics.Debug.set_IndentSize(Int32 value)
bei Nemerle.Compiler.TyperBase..cctor()
--- Ende der internen Ausnahmestapelüberwachung ---
bei Nemerle.Compiler.Typer..ctor(ManagerClass mng)
bei Nemerle.Compiler.Typer..ctor(ManagerClass mng, TypeBuilder tb, MethodBuil
der mb)
bei Nemerle.Compiler.Typer..ctor(MethodBuilder m)
bei Nemerle.Compiler.CompilerComponentsFactory.CreateTyper(MethodBuilder m)
bei Nemerle.Compiler.MethodBuilder.RunBodyTyper()
bei Nemerle.Compiler.MethodBuilder.Compile()
bei Nemerle.Compiler.TypeBuilder.EmitImplementation()
bei Nemerle.Compiler.TypesManager._N_emit_impl__53681.apply_void(TypeBuilder
_N__53680)
bei Nemerle.Compiler.TypesManager._N_maybe_f__54248.apply_void(TypeBuilder _N
__54247)
bei Nemerle.Collections.NList.Iter[T](list`1 l, FunctionVoid`1 f)
bei Nemerle.Core.list`1.Iter(FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.Iter(list`1 builders, FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.Iter(FunctionVoid`1 f)
bei Nemerle.Compiler.TypesManager.compile_all_tyinfos(Boolean aux_phase)
bei Nemerle.Compiler.TypesManager._N__N_lambda__53121__53224.apply_void()
bei Nemerle.Compiler.Solver.Enqueue(FunctionVoid action)
bei Nemerle.Compiler.TypesManager.EmitDecls()
bei Nemerle.Compiler.ManagerClass.Run()
bei Nemerle.Evaluation.Evaluator.Eval(String code)
bei Nemerle.Evaluation.Interpreter.MainClass._N_printev_9740(_N_closure_9629
_N_Main_cp_9739, String c)
—
Ну, короче, бэта — сырая... У меня все установленно (было, ибо — нефиг) на диске д. Ну, я все еще готов приобщиться...
Здравствуйте, Аноним, Вы писали:
А>Наблюдая баталии дон ки хота(ов) в соседних форумах, решил немного побороться со своей закостенелостью. Вот что из этого вышло:
А>--------------------------- А>Nemerle Studio А>--------------------------- А>Das importierte Projekt C:\Programme\Nemerle\Nemerle.MSBuild.targets wurde nicht gefunden. Vergewissern Sie sich, dass der Pfad in der <Import>-Deklaration korrekt und die Datei auf dem Datenträger vorhanden ist. C:\Dokumente und Einstellungen\Vladimir\Lokale Einstellungen\Temp\lbxyg1tn.ndx\Temp\ConsoleApplication3.nproj А>--------------------------- А>OK А>---------------------------
Не стоит менять дефолтное место установки (%ProgramFiles%\Nemerle) — иначе msbuild не сможет найти targets-файл. Вы можете открыть свой nproj файл любым текстовым редактором и подправить параметр <Nemerle/>, тогда проект соберется.
А>Ну, видимо, не судьба... Запустил интерпретатор:
А>Welcome to Nemerle interpreter (using ncc 1.0.0.8745).
Хм. Мне казалось, я это пофиксил...
Удалите nemish.exe.config — падение из за него.
Здравствуйте, hardcase, Вы писали:
H>Не стоит менять дефолтное место установки (%ProgramFiles%\Nemerle) — иначе msbuild не сможет найти targets-файл. Вы можете открыть свой nproj файл любым текстовым редактором и подправить параметр <Nemerle/>, тогда проект соберется.
Посмотрел, какой путь к таргетсам прописывается в проектах железного питона. Выяснил, что и питон, и F# используют для деплоя таргетсов подпапку в $(MSBuildExtensionsPath), которая сответствует папке "%Program Files%\MSBuild\". Может и нам так сделать?
Здравствуйте, seregaa, Вы писали:
S>Посмотрел, какой путь к таргетсам прописывается в проектах железного питона. Выяснил, что и питон, и F# используют для деплоя таргетсов подпапку в $(MSBuildExtensionsPath), которая сответствует папке "%Program Files%\MSBuild\". Может и нам так сделать?
Тогда нужно Nemerle.MSBuild складывать в GAC и как-то находить куда установлен компилятор. Может всетаки вернуться к переменной окружения?
Здравствуйте, hardcase, Вы писали:
S>>Посмотрел, какой путь к таргетсам прописывается в проектах железного питона. Выяснил, что и питон, и F# используют для деплоя таргетсов подпапку в $(MSBuildExtensionsPath), которая сответствует папке "%Program Files%\MSBuild\". Может и нам так сделать?
H>Тогда нужно Nemerle.MSBuild складывать в GAC и как-то находить куда установлен компилятор. Может всетаки вернуться к переменной окружения?
Понял. А что заставило в свое время отказаться от переменной? Кстати, можно считать путь из реестра. msbuild умеет считывать значения параметров не только из переменных окружения, но и из реестра: $(registry:Hive\MyKey\MySubKey@Value) http://msdn.microsoft.com/en-us/library/ms171458.aspx
Здравствуйте, hardcase, Вы писали:
H>Вы можете открыть свой nproj файл любым текстовым редактором и подправить параметр <Nemerle/>, тогда проект соберется. H>Удалите nemish.exe.config — падение из за него.
Здравствуйте, seregaa, Вы писали:
S>Понял. А что заставило в свое время отказаться от переменной? Кстати, можно считать путь из реестра. msbuild умеет считывать значения параметров не только из переменных окружения, но и из реестра: $(registry:Hive\MyKey\MySubKey@Value) S>http://msdn.microsoft.com/en-us/library/ms171458.aspx
Я не знаю почему от переменной окружения отказались. Когда-то была, теперь — нет.
Т.е. ты предлагаешь деплоить targets-файл и Nemerle.MSBuild в стандартный каталог, например $(MSBuildExtensionsPath)\Nemerle\1.0, а при обработки таска находить инсталляцию компилятора из реестра (если она не указана параметром Nemerle)?
Здравствуйте, Аноним, Вы писали:
А>Ждем следующий релиз
Что мешает поставить в %ProgramFiles%\Nemerle ?
/* иЗвиНите зА неРовнЫй поЧерК */
Re[4]: Не рано ли вышла бета?
От:
Аноним
Дата:
11.04.10 11:49
Оценка:
А>>Ждем следующий релиз H>Что мешает поставить в %ProgramFiles%\Nemerle ?
На домашнем компьютере место на диске С закончилось где-то три года назад... А наш системный администратор — на дом не выезжает А чистить диск С — жена отказывается, а самому — не барское дело.
Здравствуйте, Аноним, Вы писали:
А>>>Ждем следующий релиз H>>Что мешает поставить в %ProgramFiles%\Nemerle ? А>На домашнем компьютере место на диске С закончилось где-то три года назад... А наш системный администратор — на дом не выезжает А чистить диск С — жена отказывается, а самому — не барское дело.
Здравствуйте, hardcase, Вы писали:
H>Т.е. ты предлагаешь деплоить targets-файл и Nemerle.MSBuild в стандартный каталог, например $(MSBuildExtensionsPath)\Nemerle\1.0, а при обработки таска находить инсталляцию компилятора из реестра (если она не указана параметром Nemerle)?
так, или наоборот — по умолчанию инициализировать параметр Nemerle значением из рееста.
т.е. в файле проекта вместо
<Nemerle Condition=" '$(Nemerle)' == '' ">$(ProgramFiles)\Nemerle</Nemerle>
прописывать
<Nemerle Condition=" '$(Nemerle)' == '' ">$(registry:...)\Nemerle</Nemerle>
Здравствуйте, seregaa, Вы писали:
S>Здравствуйте, hardcase, Вы писали:
H>>Т.е. ты предлагаешь деплоить targets-файл и Nemerle.MSBuild в стандартный каталог, например $(MSBuildExtensionsPath)\Nemerle\1.0, а при обработки таска находить инсталляцию компилятора из реестра (если она не указана параметром Nemerle)?
S>так, или наоборот — по умолчанию инициализировать параметр Nemerle значением из рееста. S>т.е. в файле проекта вместо S><Nemerle Condition=" '$(Nemerle)' == '' ">$(ProgramFiles)\Nemerle</Nemerle> S>прописывать S><Nemerle Condition=" '$(Nemerle)' == '' ">$(registry:...)\Nemerle</Nemerle>
Вообще указание размещения компилятора в пользовательских проектах нехорошая практика, этот параметр нужен в основном для сборки самого компилятора и библиотек.
Здравствуйте, hardcase, Вы писали:
H>Вообще указание размещения компилятора в пользовательских проектах нехорошая практика, этот параметр нужен в основном для сборки самого компилятора и библиотек.
Тем не менее сейчас это указание есть во всех пользовательских проектах, причем жестко указывающее на диск c:\
Давай тогда сделаем по первому варианту. Переменная в проектах по умолчанию будет отсутствовать, и в этом случае путь будет браться из рееста.
Этот путь уже прописывется инсталятором в HKEY_CURRENT_USER\Software\$(var.ProductName)\InstallDir, где $(var.ProductName) сейчас — это "Nemerle Beta 1"
S>Этот путь уже прописывется инсталятором в HKEY_CURRENT_USER\Software\$(var.ProductName)\InstallDir, где $(var.ProductName) сейчас — это "Nemerle Beta 1"
Да, из реестра видимо и стоит брать, по крайней мере FSharp.Build именно так и поступает.
Здравствуйте, seregaa, Вы писали:
S>Этот путь уже прописывется инсталятором в HKEY_CURRENT_USER\Software\$(var.ProductName)\InstallDir, где $(var.ProductName) сейчас — это "Nemerle Beta 1"
Эта переменная пустая
Может быть лучше прописывать путь в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Nemerle ?
Здравствуйте, hardcase, Вы писали:
H>Здравствуйте, seregaa, Вы писали:
S>>Этот путь уже прописывется инсталятором в HKEY_CURRENT_USER\Software\$(var.ProductName)\InstallDir, где $(var.ProductName) сейчас — это "Nemerle Beta 1"
H>Эта переменная пустая
Значит баг в инсталяторе
H>Может быть лучше прописывать путь в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Nemerle ?
А это мысль! Заодно сборки Немерле попадут в список Add Reference. Сейчас добавлю создание этого ключа в инсталятор.
H>>Может быть лучше прописывать путь в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\AssemblyFolders\Nemerle ? S>А это мысль! Заодно сборки Немерле попадут в список Add Reference. Сейчас добавлю создание этого ключа в инсталятор.
А ведь параметр Nemerle также используется для подцепления референсов (для пользовательских проектов NoStdLib = True).
Я так понимаю, что это требуется для копирования Nemerle.dll в каталог приложения.
Здравствуйте, Аноним, Вы писали:
А>Не рано ли вышла бета?
Дык, как же мы без вших фитбэков нашли бы ошибки?
И вообще, как тумаете, зачем выпускают бэты?
А>Наблюдая баталии дон ки хота(ов) в соседних форумах, решил немного побороться со своей закостенелостью. Вот что из этого вышло:
Спасибо за фитбэк.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.