你能在 dotnet 5 及更高版本中编译没有 csproj 文件的 c# 脚本吗
can you compile a c# script without a csproj file in dotnet 5 and later
我的意思是像在 C++ 中你可以做 cl.exe main.cpp
我真的没有任何理由这样做,只是好奇
否 - 但是,对于您可能正在寻找的内容,dotnet new console
命令会生成一个默认的 csproj,运行 还会生成 Program.cs 文件。
使用新的(大概)top level statement 文件,您只需插入一些 using
和您的脚本代码,然后只需使用 dotnet run
如果您使用的是 IDE,它会 运行 为您执行所有 dotnet
命令
假设“脚本”是指“普通 C# 源文件”,那么是的,绝对可以,如果 csc
对您可用:
Program.cs:
using System;
Console.WriteLine("Hello world");
编译:
csc Program.cs
运行:
./Program.exe
现在,反编译它,它看起来像是默认针对 .NET Framework 而不是 .NET Core,但我希望如果你真的想改变它是可行的,通过指定一个自定义响应文件.它 确实 使您可以使用最新的 C# 功能,但是如果您使用仅在更高版本的 .NET 上受支持的 C# 功能(例如默认接口实现),那么我怀疑您会明确指定适当的标准库,而不是使用默认的 .NET Framework 库。
如果 csc
无法作为可执行文件提供给您,DLL 可能仍然可以在 Roslyn/bincore
.
下的 .NET SDK 目录中使用
例如,在我的 WSL2 Ubuntu 安装中,只是尝试 运行 csc
失败,但下面的命令肯定会调用 csc:
dotnet /usr/share/dotnet/sdk/6.0.202/Roslyn/bincore/csc.dll
坏消息是,尝试使用它来编译独立程序需要提供库引用等 - 这可能比它的价值更麻烦。
是的,C# 有一个脚本概念 (.csx)。它还有一个 REPL (csi.exe)
参考资料:https://docs.microsoft.com/en-us/archive/msdn-magazine/2016/january/essential-net-csharp-scripting
我的意思是像在 C++ 中你可以做 cl.exe main.cpp
我真的没有任何理由这样做,只是好奇
否 - 但是,对于您可能正在寻找的内容,dotnet new console
命令会生成一个默认的 csproj,运行 还会生成 Program.cs 文件。
使用新的(大概)top level statement 文件,您只需插入一些 using
和您的脚本代码,然后只需使用 dotnet run
如果您使用的是 IDE,它会 运行 为您执行所有 dotnet
命令
假设“脚本”是指“普通 C# 源文件”,那么是的,绝对可以,如果 csc
对您可用:
Program.cs:
using System;
Console.WriteLine("Hello world");
编译:
csc Program.cs
运行:
./Program.exe
现在,反编译它,它看起来像是默认针对 .NET Framework 而不是 .NET Core,但我希望如果你真的想改变它是可行的,通过指定一个自定义响应文件.它 确实 使您可以使用最新的 C# 功能,但是如果您使用仅在更高版本的 .NET 上受支持的 C# 功能(例如默认接口实现),那么我怀疑您会明确指定适当的标准库,而不是使用默认的 .NET Framework 库。
如果 csc
无法作为可执行文件提供给您,DLL 可能仍然可以在 Roslyn/bincore
.
例如,在我的 WSL2 Ubuntu 安装中,只是尝试 运行 csc
失败,但下面的命令肯定会调用 csc:
dotnet /usr/share/dotnet/sdk/6.0.202/Roslyn/bincore/csc.dll
坏消息是,尝试使用它来编译独立程序需要提供库引用等 - 这可能比它的价值更麻烦。
是的,C# 有一个脚本概念 (.csx)。它还有一个 REPL (csi.exe)
参考资料:https://docs.microsoft.com/en-us/archive/msdn-magazine/2016/january/essential-net-csharp-scripting