Pull to refresh

Comments 6

ещё есть вот такой трюк для сборки исходника прямо на хосте.. не смог найти статью, где я об этом читал, но точно была..

и если это ещё добавить, тогда ещё вложенность матрёшки можно поднять.. но да тут диск используется, но можно же комбинировать...

пример командного файла типа .bat или .cmd:

/*
rem @echo off && cls

set WinDirNet=%WinDir%\Microsoft.NET\Framework
IF EXIST "%WinDirNet%\v2.0.50727\csc.exe" set csc="%WinDirNet%\v2.0.50727\csc.exe"
IF EXIST "%WinDirNet%\v3.5\csc.exe" set csc="%WinDirNet%\v3.5\csc.exe"
IF EXIST "%WinDirNet%\v4.0.30319\csc.exe" set csc="%WinDirNet%\v4.0.30319\csc.exe"
%csc% /nologo /out:"%~0.exe" %0
"%~0.exe"
del "%~0.exe"

exit

*/

class HelloWorld
{
        static void Main(string[] args)
        {
            System.Console.WriteLine(" hello world!\n looking...\r\ni am at " + System.Environment.Version);
        }
}

единственной сложностью мне кажется, вот этот момент:

"Обратите внимание, что для запуска кода требуется добавить пакет Microsoft.CodeAnalysis.CSharp: "...

но имхо для тех, кто понимает идеи - сам сможет понять как обойти это ограничение..

Причём, как я узнал позже, этот функционал появился относительно недавно, лишь в 2021 году.

Значительно раньше, 2015-й наверное, плюс-минус. На предпредыдущем месте работы мы как раз в то время начали писать один проект, который плотно использовал Microsoft.CodeAnalysis.CSharp, CSharpSyntaxTree и in-memory compiling.

да в 2015 они добавили, меня тогда ещё сильно поразило, что что код можно делать из кода и компилить в онлайне.. собственно тогда у меня возникала идея, что его можно тупо передовать от сервера и компилить на клиенте... и я тогда подумал, что это очень опасная штука...

ну это дыра всей архитектуры фон-неймана... (((

в этом плане армы побеждают с гарвордовской архитектурой... но живем с чем есть..

хабр не торт?

меня удивляет низкий рейтинг этой статьи?.

очень профессиональная статья и техническая

Первая часть статьи содержала мало нового: загрузить и исполнить байткод несложно и на .NET, и на JVM. А вот загрузка и исполнение нативного когда - это интересно: там же релокации, и вызов функций из DLL. Посмотрел генераторы шеллкода, упомянутые в статье, это мощные инструменты, очень интересные, спасибо автору, что познакомил.

Sign up to leave a comment.