создаем файл hello.fsx (F# script — ! сейчас вроде еще добавилось расширение типа .fscript или .fscripts)
#!/usr/bin/env -S dotnet fsi --exec
#load "Utils.fsx"
#r "nuget: FSharp.Data"open type FSharp.Data.Http
let item = RequestString "https://rsdn.org/Forum/NewMsg.aspx?mid=8451450"
printfn $"message with id 8451450 has text '{item}'"
в винде делаем ассоциацию с "dotnet fsi"
в линуксе даем права на выполнение chmod +x hello.fsx
или просто запускаем через dotnet fsi hello.fsx
или просто запускаем dotnet fsi (интерактивный режим) и балуемся:
Здравствуйте, Shmj, Вы писали:
S>Оставлю это тут для себя:
S>3. Теперь легким движением руки наша утилита превратилась в скриптовую — можно менять без перекомпиляции и даже на машине без студии...
Ещё довольно давно есть штатная утилита csi.exe, которая не только может исполнять файлы без компиляции, но ещё и REPL реализует
Здравствуйте, Shmj, Вы писали:
S>3. Теперь легким движением руки наша утилита превратилась в скриптовую — можно менять без перекомпиляции и даже на машине без студии...
S>Хотя... Оно все-таки компилит это дело, как я понял. Так что смысл не большой.
Вот первый вопрос был про буханку и троллейбус. Можно, но зачем? Если того же проще достичь через батник с курлом и прочими поэтессами, то к чему велосипедить.
Re[2]: C# как скриптовый язык для мелких утилит...
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, Shmj, Вы писали:
S>>Оставлю это тут для себя:
S>>3. Теперь легким движением руки наша утилита превратилась в скриптовую — можно менять без перекомпиляции и даже на машине без студии...
V>Ещё довольно давно есть штатная утилита csi.exe, которая не только может исполнять файлы без компиляции, но ещё и REPL реализует
Точно штатная?
C:\Users\nn>dir c:\csi.exe /s /b
c:\Users\nn\.vscode\extensions\.f72c903a-3b1b-4024-8dc8-ca0fe2cfed4a\.omnisharp\1.38.2\.msbuild\Current\Bin\Roslyn\csi.exe
создаем и запускаем bat-файл, внутри можно просто писать на C#
/* 2> nul
@echo off
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"
if "%csc%" == "" ( echo .NET Framework not found! && echo. && pause && exit )
%csc% /nologo /out:"%~dpnx0.exe" "%~dpnx0"
if not "%ERRORLEVEL%" == "0" ( echo. && pause && exit )
cls
"%~dpnx0.exe" %*
del "%~dpnx0.exe"
exit
*/
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Linq;
using System.Runtime.InteropServices;
using System.Diagnostics;
using System.IO;
public class Program {
static void Main(string[] args)
{
Console.Write("Hello, world");
}}
корка 7.0.102
пустой скрипт 2000 мс. с printfn 2600, ссылка на нугет 6782, нугет с опре версией(загружен) 3712
PS если заменить запуск процесса на распечатку аргументов, то вообще отрабатывает мгновенно.
PS2 не кажется ли вам, что скорость загрузки вот этих вот powershell, c#, f# скриптов недопустимо медленной?
Здравствуйте, vaa, Вы писали:
V>>Ещё довольно давно есть штатная утилита csi.exe, которая не только может исполнять файлы без компиляции, но ещё и REPL реализует vaa>Точно штатная? vaa>C:\Users\nn>dir c:\csi.exe /s /b vaa>c:\Users\nn\.vscode\extensions\.f72c903a-3b1b-4024-8dc8-ca0fe2cfed4a\.omnisharp\1.38.2\.msbuild\Current\Bin\Roslyn\csi.exe
Ну у меня она в "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn\csi.exe"
Входит в поставку VS2019 и, наверное, других версий.
Re[2]: C# как скриптовый язык для мелких утилит...
Здравствуйте, Osaka, Вы писали:
vlp>>%csc% /nologo /out:"%~dpnx0.exe" "%~dpnx0" O>/debug:full O>Вот если бы ещё научить его по брыкпоинтам выходить в отладчик..
Здравствуйте, vmpire, Вы писали:
V>Здравствуйте, vaa, Вы писали:
V>>>Ещё довольно давно есть штатная утилита csi.exe, которая не только может исполнять файлы без компиляции, но ещё и REPL реализует vaa>>Точно штатная? vaa>>C:\Users\nn>dir c:\csi.exe /s /b vaa>>c:\Users\nn\.vscode\extensions\.f72c903a-3b1b-4024-8dc8-ca0fe2cfed4a\.omnisharp\1.38.2\.msbuild\Current\Bin\Roslyn\csi.exe V>Ну у меня она в "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn\csi.exe" V>Входит в поставку VS2019 и, наверное, других версий.
у меня 2022.
нет.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[5]: C# как скриптовый язык для мелких утилит...
Здравствуйте, vaa, Вы писали:
vaa>>>Точно штатная? vaa>>>C:\Users\nn>dir c:\csi.exe /s /b vaa>>>c:\Users\nn\.vscode\extensions\.f72c903a-3b1b-4024-8dc8-ca0fe2cfed4a\.omnisharp\1.38.2\.msbuild\Current\Bin\Roslyn\csi.exe V>>Ну у меня она в "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Roslyn\csi.exe" V>>Входит в поставку VS2019 и, наверное, других версий. vaa>у меня 2022. vaa>нет.
vs 2022 вся из себя 64-битная. В ней у меня тоже есть: C:\Program Files\Microsoft Visual Studio\2022\Community\Msbuild\Current\Bin\Roslyn\csi.exe
Re[2]: C# как скриптовый язык для мелких утилит...
Здравствуйте, vaa, Вы писали:
vaa>PS2 не кажется ли вам, что скорость загрузки вот этих вот powershell, c#, f# скриптов недопустимо медленной? Так и есть.
Тут подсказывают, что F Sharp Interactive вообще не предназнался для этих целей, а посему время запуска особо никого не беспокоит.
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, vaa, Вы писали:
vaa>>PS2 не кажется ли вам, что скорость загрузки вот этих вот powershell, c#, f# скриптов недопустимо медленной? _NN>Так и есть. _NN>Тут подсказывают, что F Sharp Interactive вообще не предназнался для этих целей, а посему время запуска особо никого не беспокоит.
--exec Выход из FSI после загрузки файлов или выполнение скрипта .fsx, указанного в
командной строке
Это некто филлип картер он на мств занимается рекламой фарша. дон сайм(главный архитектор фарша) этого не говорит.
лень искать, но даже в оф руководствах приводится как линукс добавить хэшбанг чтобы удобнее и командной строки запускать.
наверно не для того чтобы заниматься интерактивной разработкой.
тут проблема скореее всего в жирном рантайме и предкомпиляции. кстати сама утилита dotnet похоже написана не на дотнете)))
_NN>Как вариант собрать и закешировать через
fake -s run helloworld.fsx
не уверен что это лучше, добавляем еще одну стадию загрузки.
вообще, было бы идеально статик-компиляция,и чтобы сборку попадали только те функции что
реально используются.
так как это делается в некоторых языках. так вроде умел турбопаскаль.
или вот node js при сборке бандла умеет выкинуть все лишнее.
я так поминаю, загрузка dll это не только файл прочитать.
Здравствуйте, vaa, Вы писали:
vaa>тут проблема скореее всего в жирном рантайме и предкомпиляции. кстати сама утилита dotnet похоже написана не на дотнете)))
Не угадали: https://github.com/dotnet/sdk/tree/main/src/Cli/dotnet
vaa>не уверен что это лучше, добавляем еще одну стадию загрузки. vaa>вообще, было бы идеально статик-компиляция,и чтобы сборку попадали только те функции что vaa>реально используются. vaa>так как это делается в некоторых языках. так вроде умел турбопаскаль. vaa>или вот node js при сборке бандла умеет выкинуть все лишнее. vaa>я так поминаю, загрузка dll это не только файл прочитать.
Это надо сначала в приоритете чтобы было.
Вон PowerShell начал запускаться более менее быстро когда начали переписывать и позиционировать как оболочку для скриптов.
Здравствуйте, _NN_, Вы писали:
_NN>Здравствуйте, vaa, Вы писали:
vaa>>тут проблема скореее всего в жирном рантайме и предкомпиляции. кстати сама утилита dotnet похоже написана не на дотнете))) _NN>Не угадали: https://github.com/dotnet/sdk/tree/main/src/Cli/dotnet
Прикольно!
MicrosoftAspNetCore!!! Получается изначально так и планировали — только веб?
_NN>Это надо сначала в приоритете чтобы было. _NN>Вон PowerShell начал запускаться более менее быстро когда начали переписывать и позиционировать как оболочку для скриптов.
Блин, ну так и FSI так позиционировали. к тому же у фарша компилятор свой, с 2006 года принципиально не менялся, как fsi.
надо сказать в старом дотнете все гораздо шустрее стартовало.
☭ ✊ В мире нет ничего, кроме движущейся материи.
Re[4]: C# как скриптовый язык для мелких утилит...