Как откомпилировать C#-проект с помощью Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.05.11 21:02
Оценка: :)
Вот тут пришло по рассылке гугля ссылка. В ней, кто-то, в простой и доступной форме описал как преобразовать C#-проект в Nemerle-проект. Перевод:

Добавьте эту строчку в начала csproj-файла:

  <PropertyGroup>
    <NoStdLib>true</NoStdLib>
    <Nemerle Condition=" '$(Nemerle)' == '' ">$(ProgramFiles)\Nemerle</Nemerle>
    <Name>ClassLibrary1</Name>
  </PropertyGroup>

Добавьте ссылки на следующие сборки: mscorlib, System, System.Core, Nemerle, Nemerle.Linq:
Add references to the Nemerle.dll and the Nemerle.Linq.dll:
<Reference Include="mscorlib" />
<Reference Include="System" />
<Reference Include="System.Core">
  <RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="Nemerle">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>$(Nemerle)\Nemerle.dll</HintPath>
  <Private>True</Private>
</Reference>
<MacroReference Include="Nemerle.Linq">
  <HintPath>$(Nemerle)\Nemerle.Linq.dll</HintPath>
</MacroReference>

и замените стровку:
  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

на
<Import Project="$(Nemerle)\Nemerle.MSBuild.targets" />


Теперь c#-файлы будут компилироваться компилятором Nemerle (ncc). Вы так же можете добавлять новые файлы.

Это не очевидно, но C# при этом интерпретируется как Nemerle с синтаксисом C#. Но многие проекты (OSS???) были откомпилированы в процессе тестов парсера.

Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .

Уверен, многим это будет интересно.

31.05.11 02:36: Перенесено модератором из 'Философия программирования' — WolfHound
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Как откомпилировать C#-проект с помощью Nemerle
От: Ziaw Россия  
Дата: 31.05.11 01:14
Оценка: 50 (1)
Здравствуйте, VladD2, Вы писали:

VD>Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .


Это я в твиттере общался с одни парнем которому nemerle интересен.
Re: Как откомпилировать C#-проект с помощью Nemerle
От: alvas  
Дата: 31.05.11 04:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Вот тут пришло по рассылке гугля ссылка. В ней, кто-то, в простой и доступной форме описал как преобразовать C#-проект в Nemerle-проект. Перевод:

VD>

VD>Добавьте эту строчку в начала csproj-файла:
VD>

VD>  <PropertyGroup>
VD>    <NoStdLib>true</NoStdLib>
VD>    <Nemerle Condition=" '$(Nemerle)' == '' ">$(ProgramFiles)\Nemerle</Nemerle>
VD>    <Name>ClassLibrary1</Name>
VD>  </PropertyGroup>
VD>

VD>и замените стровку:
VD>
VD>  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
VD>

VD>на
VD> <
VD>
VD>Import Project="$(Nemerle)\Nemerle.MSBuild.targets" />
VD>


VD>Теперь c#-файлы будут компилироваться компилятором Nemerle (ncc). Вы так же можете добавлять новые файлы.

VD>Это не очевидно, но C# при этом интерпретируется как Nemerle с синтаксисом C#. Но многие проекты (OSS???) были откомпилированы в процессе тестов парсера.

VD>Думаю, что это дело запостил Хардкейс. Вот только жаль, что он (если это он) забыл кинуть соответствующее сообщение сюда .

VD>Уверен, многим это будет интересно.


Выложите на nemerle.org пожалуйста
http://alvas.net — Аудио-инструменты для .Net разработчиков
Re[2]: Как откомпилировать C#-проект с помощью Nemerle
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 07:35
Оценка:
Здравствуйте, alvas, Вы писали:

A>Выложите на nemerle.org пожалуйста


здесь
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[3]: Как откомпилировать C#-проект с помощью Nemerle
От: Ziaw Россия  
Дата: 31.05.11 08:20
Оценка:
Здравствуйте, _nn_, Вы писали:

__>здесь


Надеюсь ты проверил? У меня под рукой не было простенького проекта на CLR4, а nemerle стоит для .net4, поэтому рекомендации наполовину в теории. Я не сбилдил так ни одного проекта.
Re[4]: Как откомпилировать C#-проект с помощью Nemerle
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 09:00
Оценка:
Здравствуйте, 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()
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: Как откомпилировать C#-проект с помощью Nemerle
От: Ziaw Россия  
Дата: 31.05.11 11:05
Оценка:
Здравствуйте, _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
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 11:34
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Это как раз косяк несовместимостей CLR, проверь, тот ли фреймворк.


Я пробовал VS2010 + Nemerle .Net 4.0
Попробую с 2008 сейчас.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[6]: Как откомпилировать C#-проект с помощью Nemerle
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 12:46
Оценка:
Здравствуйте, 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.


Проверил, .Net 3.5.
В чем проблема не пойму
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[7]: Как откомпилировать C#-проект с помощью Nemerle
От: Ziaw Россия  
Дата: 31.05.11 13:30
Оценка:
Здравствуйте, _nn_, Вы писали:

Проблема в том, что у тебя стоит nemerle для 4.0. Msbuild от 3.5 не сможет заюзать его таск. А когда ты запускашь мсбилд от 4.0 компилятор не может загрузить System.Array из какой-то сборки для 3.5.

Изза этих проблем я и дал непроверенное решение. У меня тоже компилятор для Net4.
Re[8]: Как откомпилировать C#-проект с помощью Nemerle
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 13:39
Оценка:
Здравствуйте, 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 ==========
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[9]: Как откомпилировать C#-проект с помощью Nemerle
От: seregaa Ниоткуда http://blogtani.ru
Дата: 31.05.11 14:27
Оценка:
Здравствуйте, _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)
        {
        }
    }
}
Мобильная версия сайта RSDN — http://rsdn.org/forum/rsdn/6938747
Автор: sergeya
Дата: 19.10.17
Re[5]: Как откомпилировать C#-проект с помощью Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.05.11 14:37
Оценка:
Здравствуйте, _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 подключить:
    <Reference Include="Nemerle">
      <SpecificVersion>False</SpecificVersion>
      <HintPath>$(Nemerle)\Nemerle.dll</HintPath>
      <Private>True</Private>
    </Reference>
    <MacroReference Include="Nemerle.Linq">
      <HintPath>$(Nemerle)\Nemerle.Linq.dll</HintPath>
    </MacroReference>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Как откомпилировать C#-проект с помощью Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.05.11 14:41
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Не сработало:


Я подправил твою страничку. Попробуй еще раз с добавлением указанных ссылок.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Как откомпилировать C#-проект с помощью Nemerle
От: _nn_ www.nemerleweb.com
Дата: 31.05.11 14:53
Оценка:
Здравствуйте, VladD2, Вы писали:

    <MacroReference Include="Nemerle.Linq">
      <HintPath>$(Nemerle)\Nemerle.Linq.dll</HintPath>
    </MacroReference>


С этим не работает.

Выдает:
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'.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[7]: Как откомпилировать C#-проект с помощью Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 31.05.11 16:55
Оценка:
Здравствуйте, _nn_, Вы писали:

__>
__>    <MacroReference Include="Nemerle.Linq">
__>      <HintPath>$(Nemerle)\Nemerle.Linq.dll</HintPath>
__>    </MacroReference>
__>

__>С этим не работает.
__>Выдает:
__>
__>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'.
__>


Что-то я не вижу связи между линком и app.config. Без Nemerle.Linq.dll не будет работать преобразование в деревья выражений.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Как откомпилировать C#-проект с помощью Nemerle
От: Silver_S Ниоткуда  
Дата: 31.05.11 17:07
Оценка:
Здравствуйте, 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
От: Ziaw Россия  
Дата: 31.05.11 17:13
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S>Кстати, а Немерловые синтаксические макросы, по здадумке, можно использовать и в таких переделанных C# проектах?


Синтаксические нет, синтаксис C# не расширяем (по крайней мере пока). Атрибутные можно.
Re[9]: Как откомпилировать C#-проект с помощью Nemerle
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.06.11 14:06
Оценка:
Здравствуйте, Silver_S, Вы писали:

S_S> Без AppConfig компилится, но этот Nemerle.Linq попадает в одну папку с исходниками, и путь FullPath у него на в папку проектом.


Что-то я не понял в чем проблема.

S_S>А как должно было быть — появиться отдельная папка "Macro References", как в Немерловых проектах?


Папки в проектах — это совершенно необязательная вещь. Без них все должно работать на ура.

S_S>Кстати, а Немерловые синтаксические макросы, по здадумке, можно использовать и в таких переделанных C# проектах?


Синтаксические — нет. А вот обычные (метаатрибуты и те что выглядят как вызовы методов) — можно. Плюс можно помечать классы как partial и иметь один класс часть которого написана на Шарпе, а другая на Немерле.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.