Информация об изменениях

Сообщение C# как скриптовый язык для мелких утилит... от 18.01.2023 19:38

Изменено 18.01.2023 20:02 Shmj

C# как скриптовый язык для мелких утилит...
Оставлю это тут для себя:

1. Создаем в папке мелкой утилиты Run.ps1 -файл с таким содержимым:

$srcFiles = Get-ChildItem "./*.cs" | select FullName

$sb = [System.Text.StringBuilder]::new()

[void]$sb.Append(@'
using System;
using System.Net;

'@)

foreach ($srcFile in $srcFiles)
{
    $lines = (Get-Content $srcFile.FullName -Raw).Split([Environment]::NewLine)
  
    foreach ($line in $lines)
    {
        if ($line.StartsWith("using "))
        {
            continue;
        }

        [void]$sb.Append($line);
    }
}

$code = $sb.ToString()
Add-Type -TypeDefinition $code -Language CSharp

[NetworkBackupper.Program]::Main("")
Pause


2. В самом скрипте указываем все using-и и вместо MyNamespace1 пространство имен вашей консольной утилиты. Класс Program и Main должны быть public.

3. Теперь легким движением руки наша утилита превратилась в скриптовую — можно менять без перекомпиляции и даже на машине без студии...
powershell
C# как скриптовый язык для мелких утилит...
Оставлю это тут для себя:

1. Создаем в папке мелкой утилиты Run.ps1 -файл с таким содержимым:

$srcFiles = Get-ChildItem "./*.cs" | select FullName

$sb = [System.Text.StringBuilder]::new()

[void]$sb.Append(@'
using System;
using System.Net;

'@)

foreach ($srcFile in $srcFiles)
{
    $lines = (Get-Content $srcFile.FullName -Raw).Split([Environment]::NewLine)
  
    foreach ($line in $lines)
    {
        if ($line.StartsWith("using "))
        {
            continue;
        }

        [void]$sb.Append($line);
    }
}

$code = $sb.ToString()
Add-Type -TypeDefinition $code -Language CSharp

[MyNamespace1.Program]::Main("")
Pause


2. В самом скрипте указываем все using-и и вместо MyNamespace1 пространство имен вашей консольной утилиты. Класс Program и Main должны быть public.

3. Теперь легким движением руки наша утилита превратилась в скриптовую — можно менять без перекомпиляции и даже на машине без студии...
powershell