sil*_*der 10 .net c# roslyn .net-core dotnet-cli
最后是一种从命令行执行c#脚本文件的简单方法吗?
根据这个线程,我认为dotnet run Test.cs应该做的工作.
但对于我的测试类,它是:
using System;
namespace Scripts
{
public class Program
{
public static void Main(string[] args)
{
Console.Out.WriteLine("This is the miracle");
}
}
}
Run Code Online (Sandbox Code Playgroud)
它失败
PM> dotnet run .\Test.cs
dotnet.exe : Object reference not set to an instance of an object.At line:1 char:1
Run Code Online (Sandbox Code Playgroud)
那么如何使用命令行以相对简单的方式在单个文件中执行代码呢?
UPD 1:@Lee和@svick正确提到的dotnet run是运行项目.但我最初的问题是 - 如何运行单个文件.也许有些选择使用roslyn?
Tom*_*uer 15
我在 Scott Hanselman 的博客上找到了另一个解决方案:
https://www.hanselman.com/blog/CANdNETCoreScriptingWithTheDotnetscriptGlobalTool.aspx
它依赖于一个名为 的 .NET CLI 工具dotnet-script,您可以在下面找到它的存储库:
https://github.com/filipw/dotnet-script
要使用它,首先使用它安装它 dotnet tool install -g dotnet-script
然后你可以运行dotnet script并将其用作 REPL 或运行dotnet script file.csx以运行文件。
若要包含 NuGet 包引用,请使用#r "nuget: AutoMapper, 6.1.0".
Ale*_*lex 13
PowerShell 一内衬开箱即用
(Add-Type -Path "Program.cs" -PassThru)::Main()
Run Code Online (Sandbox Code Playgroud)
PS 在您的特定情况下,该Main()方法有args参数,它会抱怨它丢失了。在这种情况下请致电Main($null)
可以使用 Powershell 来完成。假设您的代码位于test.cs当前文件夹中的文件中:
$source = (Get-Content .\test.cs) -join " "
Add-Type $source -Language CSharp
[Scripts.Program]::Main((""))
Run Code Online (Sandbox Code Playgroud)
给出
PS> .\test.ps1
This is the miracle
Run Code Online (Sandbox Code Playgroud)
那么如何使用命令行以相对简单的方式执行单个文件中的代码呢?
将上述代码包装到一个函数中,将文件名作为参数,将该函数放入您的 Powershell 配置文件中并在需要时运行它。但请注意,一旦您需要其他程序集,就必须在调用时指定它们。这是一个稍微详细一点的例子。
很确定您需要一个project.json 文件。这是一个让它运行的基本文件:
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0-*",
"type": "platform"
}
},
"frameworks": {
"netcoreapp1.0": {
"imports": {}
}
},
"buildOptions": {
"emitEntryPoint": true
}
}
Run Code Online (Sandbox Code Playgroud)
请注意emitEntryPoint.
我必须dotnet restore先,然后dotnet run test.cs。
| 归档时间: |
|
| 查看次数: |
2928 次 |
| 最近记录: |