【发布时间】:2022-12-23 11:41:20
【问题描述】:
我的意思是像在 C++ 中一样,你可以执行 cl.exe main.cpp
我真的没有任何理由这样做,只是好奇
【问题讨论】:
标签: c#
我的意思是像在 C++ 中一样,你可以执行 cl.exe main.cpp
我真的没有任何理由这样做,只是好奇
【问题讨论】:
标签: c#
假设“脚本”是指“普通 C# 源文件”,那么是的,绝对是,如果 csc 对您可用:
程序.cs:
using System;
Console.WriteLine("Hello world");
编译:
csc Program.cs
跑步:
./Program.exe
现在,反编译它,它看起来像是默认针对 .NET Framework 而不是 .NET Core,但我希望如果您真的想要通过指定自定义响应文件来更改它是可行的。它做为您提供最新的 C# 功能,但如果您使用仅在更高版本的 .NET 上支持的 C# 功能(例如默认接口实现),那么我怀疑您必须明确指定适当的标准库而不是使用默认的.NET 框架的。
如果 csc 不能作为可执行文件提供给您,DLL 可能仍然可以在 Roslyn/bincore 下的 .NET SDK 目录中使用。
例如,在我的 WSL2 Ubuntu 安装中,只是尝试运行 csc 失败,但下面的命令肯定会调用 csc:
dotnet /usr/share/dotnet/sdk/6.0.202/Roslyn/bincore/csc.dll
坏消息是,尝试使用它来编译独立程序需要提供库引用等——这可能比它的价值更麻烦。
【讨论】:
不 - 但是,对于您可能正在寻找的内容,dotnet new console 命令生成一个默认的 csproj,它运行同样生成的 Program.cs 文件。
使用新的(大概)top level statement 文件,您只需插入一些usings 和您的脚本代码,然后使用dotnet run
如果您使用的是 IDE,它会为您运行所有 dotnet 命令
【讨论】:
是的,C# 有一个脚本概念 (.csx)。它还有一个 REPL (csi.exe)
参考资料:https://learn.microsoft.com/en-us/archive/msdn-magazine/2016/january/essential-net-csharp-scripting
【讨论】:
您可以编写批处理或 bash 脚本来 使用所需的参考运行 Roslyn csc 或从 https://github.com/km-hussain-in/CourseSamples/blob/main/CSharp/cscc.zip
【讨论】: