2016-05-30 5 views
6

Есть ли, наконец, простой способ выполнить файл сценария C# из командной строки?запустить одиночный скрипт * .cs из командной строки

Я видел, что discussion on github

и согласно этой теме я думаю dotnet run Test.cs должен делать эту работу.

Но для моего TestClass который:

using System; 
namespace Scripts 
{ 
    public class Program 
    { 
     public static void Main(string[] args) 
     { 
      Console.Out.WriteLine("This is the miracle"); 
     } 
    } 
} 

он не

PM> dotnet run .\Test.cs 
dotnet.exe : Object reference not set to an instance of an object.At line:1 char:1 

Так как я мог выполнить код в одном файле с помощью командной строки в относительно легкой форме?


UPD 1: Как правильно упомянуто @Lee и @svick dotnet run для запуска проекта. Но мой первоначальный вопрос: как запустить одиночный файл. Может быть, некоторые варианты с использованием roslyn?

+0

проверьте это [link] (https://msdn.microsoft.com/en-us/library/k1sx6ed2.aspx?f=255&MSPPError=-2147217396), это может вам помочь. –

+1

Эта ссылка очень старая. [Вот текущая документация для 'dotnet run'.] (Http://dotnet.github.io/docs/core-concepts/core-sdk/cli/dotnet-run.html) – svick

+0

@MANISH Это не очень актуально для 'dotnet' CLI. – svick

ответ

1

Довольно уверен, что вам понадобится файл project.json. Вот файл голые кости, чтобы он работает:

{ 
    "dependencies": { 
    "Microsoft.NETCore.App": { 
     "version": "1.0.0-*", 
     "type": "platform" 
    } 
    }, 

    "frameworks": { 
    "netcoreapp1.0": { 
     "imports": {} 
    } 
    }, 

    "buildOptions": { 
    "emitEntryPoint": true 
    } 
} 

Обратите внимание на emitEntryPoint.

Сначала мне пришлось dotnet restore, а затем dotnet run test.cs.

+0

, поэтому эти параметры предназначены только для проектов и не позволяют запускать одиночные скрипты, не так ли? –

+0

Я так думаю, но если кто-то может подтвердить, что это будет хорошо. Я замечаю, что если вы делаете «dotnet new», он создает два файла. «Hello World» Program.cs и простой файл project.json. –

1

Это может быть сделано с использованием Powershell. предположила, ваш код находится в файле test.cs в текущей папке:

$source = (Get-Content .\test.cs) -join " " 
Add-Type $source -Language CSharp 
[Scripts.Program]::Main(("")) 

дает

PS> .\test.ps1 
This is the miracle 

Так как я мог выполнить код в одном файле с помощью командной строки в относительно простым способом ?

Включите указанный выше код в функцию, сделайте имя файла параметром, поместите эту функцию в свой профиль Powershell и запустите ее, когда захотите. Но имейте в виду, что, как только вам понадобятся другие сборки, они должны быть указаны при выполнении вызова. Here's a slightly more elaborat example.