Теперь c#-файлы будут компилироваться компилятором Nemerle (ncc). Вы так же можете добавлять новые файлы.
Это не очевидно, но C# при этом интерпретируется как Nemerle с синтаксисом C#. Но многие проекты (OSS???) были откомпилированы в процессе тестов парсера.
Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .
Уверен, многим это будет интересно.
31.05.11 02:36: Перенесено модератором из 'Философия программирования' — WolfHound
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, VladD2, Вы писали:
VD>Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .
Это я в твиттере общался с одни парнем которому nemerle интересен.
Re: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, VladD2, Вы писали:
VD>Вот тут пришло по рассылке гугля ссылка. В ней, кто-то, в простой и доступной форме описал как преобразовать C#-проект в Nemerle-проект. Перевод: VD>
VD>Добавьте эту строчку в начала csproj-файла:
VD>
VD>Теперь c#-файлы будут компилироваться компилятором Nemerle (ncc). Вы так же можете добавлять новые файлы.
VD>Это не очевидно, но C# при этом интерпретируется как Nemerle с синтаксисом C#. Но многие проекты (OSS???) были откомпилированы в процессе тестов парсера.
VD>Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .
VD>Уверен, многим это будет интересно.
Надеюсь ты проверил? У меня под рукой не было простенького проекта на CLR4, а nemerle стоит для .net4, поэтому рекомендации наполовину в теории. Я не сбилдил так ни одного проекта.
Re[4]: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, _nn_, Вы писали:
__>>здесь
Z>Надеюсь ты проверил? У меня под рукой не было простенького проекта на CLR4, а nemerle стоит для .net4, поэтому рекомендации наполовину в теории. Я не сбилдил так ни одного проекта.
Да уж, поторопился
Я то думал, что уже проверенно.
Не сработало:
C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : Internal compiler error 'cannot reflect `System.Array'', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : internal compiler error: assertion failed in file ncc\external\InternalTypes.n, line 162: cannot reflect `System.Array'
at Nemerle.Compiler.SystemTypeClass.Reflect(String type_name)
at Nemerle.Compiler.SystemTypeClass.Init()
at Nemerle.Compiler.ManagerClass._N__N_lambda__26508__26671.apply_void()
at Nemerle.Compiler.ManagerClass._N_tryEx_26531(_N_closure_26515 _N_LoadExternalLibraries_cp_26530, FunctionVoid f)
at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
at Nemerle.Compiler.ManagerClass.Run()
at Nemerle.CommandlineCompiler.MainClass.main_with_catching()
Здравствуйте, _nn_, Вы писали:
__>Да уж, поторопился __>Я то думал, что уже проверенно.
__>Не сработало:
__>
__>C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : Internal compiler error 'cannot reflect `System.Array'', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
__>C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : internal compiler error: assertion failed in file ncc\external\InternalTypes.n, line 162: cannot reflect `System.Array'
__> at Nemerle.Compiler.SystemTypeClass.Reflect(String type_name)
__> at Nemerle.Compiler.SystemTypeClass.Init()
__> at Nemerle.Compiler.ManagerClass._N__N_lambda__26508__26671.apply_void()
__> at Nemerle.Compiler.ManagerClass._N_tryEx_26531(_N_closure_26515 _N_LoadExternalLibraries_cp_26530, FunctionVoid f)
__> at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
__> at Nemerle.Compiler.ManagerClass.Run()
__> at Nemerle.CommandlineCompiler.MainClass.main_with_catching()
__>
Это как раз косяк несовместимостей CLR, проверь, тот ли фреймворк.
Re[6]: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, Ziaw, Вы писали:
Z>Это как раз косяк несовместимостей CLR, проверь, тот ли фреймворк.
VS 2008:
C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error MSB4062: The "Nemerle.Tools.MSBuildTask.Ncc" task could not be loaded from the assembly C:\Program Files (x86)\Nemerle\\Nemerle.MSBuild.Tasks.dll. Could not load file or assembly 'file:///C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.Tasks.dll' or one of its dependencies. This assembly is built by a runtime newer than the currently loaded runtime and cannot be loaded. Confirm that the <UsingTask> declaration is correct, and that the assembly and all its dependencies are available.
Проблема в том, что у тебя стоит nemerle для 4.0. Msbuild от 3.5 не сможет заюзать его таск. А когда ты запускашь мсбилд от 4.0 компилятор не может загрузить System.Array из какой-то сборки для 3.5.
Изза этих проблем я и дал непроверенное решение. У меня тоже компилятор для Net4.
Re[8]: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, Ziaw, Вы писали:
Z>Здравствуйте, _nn_, Вы писали:
Z>Проблема в том, что у тебя стоит nemerle для 4.0. Msbuild от 3.5 не сможет заюзать его таск. А когда ты запускашь мсбилд от 4.0 компилятор не может загрузить System.Array из какой-то сборки для 3.5.
Z>Изза этих проблем я и дал непроверенное решение. У меня тоже компилятор для Net4.
Чистая установка Nemerle 3.5, VS 2008:
------ Build started: Project: ConsoleApplication1, Configuration: Debug Any CPU ------
C:\Program Files (x86)\Nemerle\ncc.exe
/no-color
/no-stdlib
/greedy-references:-
/define:DEBUG;TRACE
/target:exe
/debug+
/project-path:c:\Projects\test\ConsoleApplication1\ConsoleApplication1.csproj
/root-namespace:ConsoleApplication1
Program.cs
Properties\AssemblyInfo.cs
/ref:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll"
/ref:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Data.DataSetExtensions.dll"
/ref:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll
/ref:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll
/ref:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
/ref:"C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\v3.5\System.Xml.Linq.dll"
/out:obj\Debug\ConsoleApplication1.exe
C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : Internal compiler error 'cannot reflect `System.Array'', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : internal compiler error: assertion failed in file ncc\external\InternalTypes.n, line 162: cannot reflect `System.Array'
at Nemerle.Compiler.SystemTypeClass.Reflect(String type_name)
at Nemerle.Compiler.SystemTypeClass.Init()
at Nemerle.Compiler.ManagerClass._N__N_lambda__24868__25031.apply_void()
at Nemerle.Compiler.ManagerClass._N_tryEx_24891(_N_closure_24875 _N_LoadExternalLibraries_cp_24890, FunctionVoid f)
at Nemerle.Compiler.ManagerClass.LoadExternalLibraries()
at Nemerle.Compiler.ManagerClass.Run()
at Nemerle.CommandlineCompiler.MainClass.main_with_catching()
Done building project "ConsoleApplication1.csproj" -- FAILED.
========== Build: 0 succeeded or up-to-date, 1 failed, 0 skipped ==========
Здравствуйте, _nn_, Вы писали:
__>C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : Internal compiler error 'cannot reflect `System.Array'', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
Добавь ссылку на mscorlib.dll
Ошибка с System.Array исчезнет, но появятся следующие:
Program.cs(9,10,9,14): error : parse error near keyword `void': expecting type declaration
Program.cs(9,15,9,19): error : parse error near identifier `Main': unexpected token after class member (you forget a closing bracket?).
Это при компиляции минимального консольного проекта:
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
}
}
}
Здравствуйте, _nn_, Вы писали:
__>Не сработало:
__>
__>C:\Program Files (x86)\Nemerle\Nemerle.MSBuild.targets(230,9): error : Internal compiler error 'cannot reflect `System.Array'', please report a bug to bugs.nemerle.org. You can try modifying program near this location.
__>
Надо ссылки на Nemerle.dll и Nemerle.Linq.dll подключить:
app.config;app.config : error MSB3249: Application Configuration file "app.config;app.config" is invalid. Could not find file 'c:\Projects\test\ConsoleApplication1\app.config;app.config'.
Здравствуйте, VladD2, Вы писали:
__>>[xml] __>> <MacroReference Include="Nemerle.Linq"> __>> <HintPath>$(Nemerle)\Nemerle.Linq.dll</HintPath> __>> </MacroReference>
VD>Что-то я не вижу связи между линком и app.config. Без Nemerle.Linq.dll не будет работать преобразование в деревья выражений.
Без AppConfig компилится, но этот Nemerle.Linq попадает в одну папку с исходниками, и путь FullPath у него на в папку проектом. А как должно было быть — появиться отдельная папка "Macro References", как в Немерловых проектах?
Кстати, а Немерловые синтаксические макросы, по здадумке, можно использовать и в таких переделанных C# проектах?
Re[9]: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, Silver_S, Вы писали:
S_S>Кстати, а Немерловые синтаксические макросы, по здадумке, можно использовать и в таких переделанных C# проектах?
Синтаксические нет, синтаксис C# не расширяем (по крайней мере пока). Атрибутные можно.
Re[9]: Как откомпилировать C#-проект с помощью Nemerle
Здравствуйте, Silver_S, Вы писали:
S_S> Без AppConfig компилится, но этот Nemerle.Linq попадает в одну папку с исходниками, и путь FullPath у него на в папку проектом.
Что-то я не понял в чем проблема.
S_S>А как должно было быть — появиться отдельная папка "Macro References", как в Немерловых проектах?
Папки в проектах — это совершенно необязательная вещь. Без них все должно работать на ура.
S_S>Кстати, а Немерловые синтаксические макросы, по здадумке, можно использовать и в таких переделанных C# проектах?
Синтаксические — нет. А вот обычные (метаатрибуты и те что выглядят как вызовы методов) — можно. Плюс можно помечать классы как partial и иметь один класс часть которого написана на Шарпе, а другая на Немерле.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.