プロジェクトを作らずにdotnet runで単独のcsファイルが実行できると便利なので方法を調べましたが見つかりませんでした。
仕方がないのでプロジェクトを自動作成するPowerShellスクリプトを作成してみました。
ファイル名:Run-CS.ps1
<#
.SYNOPSIS
単独のcsファイルを実行する
.DESCRIPTION
単独のcsファイルを実行する
.EXAMPLE
Run-CS.ps1 hoge.cs
.PARAMETER CSPath
実行するcsファイルのパス
#>
param(
[switch]
$Help,
[string]
$CSPath="hoge.cs"
)
if ($Help) {
Get-Help $MyInvocation.MyCommand.Path
Exit 1
}
$ProjectName = [System.IO.Path]::GetFileNameWithoutExtension($CSPath)
if (!(Test-Path $ProjectName))
{
# プロジェクトフォルダがない場合作成
dotnet.exe new console -n $ProjectName
}
Remove-Item $ProjectName/*.cs
Copy-Item $CSPath $ProjectName/
dotnet.exe run --project $ProjectName/$ProjectName.csproj
使い方は、まず以下のソースコードを適当なフォルダに作成します。
ファイル名:hello.cs
using System;
class Hello
{
static void Main()
{
Console.WriteLine("Hello 4nd World!");
}
}
ソースコードと同じフォルダで
Run-Cs.ps1 ./hello.cs
#Hello 4nd World! ⇐ 実行結果
を実行します。
かなり適当なスクリプトですので問題がある場合その都度修正することにします。
ついでに単独exeをビルドするスクリプトも作成してみます。


C#で単独ファイルで実行できるexeファイルをつくるdotnet.exeのオプション
C#のコンソールプロジェクトでコマンドプロンプト又はPowerShellから実行できる外部コマンドを作成しようと思います。通常にビルドを行うと、実行するバイナリファイルの.exe以外に実行に必要となる.dllファイルが生成されます。複数のフ...
ファイル名:Build-CS.ps1
<#
.SYNOPSIS
単独のcsファイルをビルドする
.DESCRIPTION
単独のcsファイルをビルドする
.EXAMPLE
Run-CS.ps1 hoge.cs
.PARAMETER CSPath
ビルドするcsファイルのパス
#>
param(
[switch]
$Help,
[string]
$CSPath="hoge.cs"
)
if ($Help) {
Get-Help $MyInvocation.MyCommand.Path
Exit 1
}
$ProjectName = [System.IO.Path]::GetFileNameWithoutExtension($CSPath)
if (!(Test-Path $ProjectName))
{
# プロジェクトフォルダがない場合作成
dotnet.exe new console -n $ProjectName
}
Remove-Item $ProjectName/*.cs
Copy-Item $CSPath $ProjectName/
Set-Location $ProjectName
dotnet.exe publish -c Release -r win-x64 /p:PublishSingleFile=true --self-contained true -o ".."
Set-Location ..
Remove-Item ($ProjectName+".pdb")
使い方はRun-CS.psと同じです。
pdbは個人的に不要ですので削除しています。
コメント