Не удается запустить консольные приложения DNX

У меня возникли проблемы с запуском простого консольного тестового приложения с использованием командной строки dnx. Я знаю, что на данный момент это развивающаяся технология, но я хотел бы, чтобы это работало для моего собственного здравомыслия.

Вот программа:

using System;

public class Program
{
    public void Main(string[] args)
    {
        Console.WriteLine("Foo");
        Console.ReadLine();
    }
}

Это список DNVM

Active Version     Runtime Architecture Location                   Alias
------ -------     ------- ------------ --------                   -----
  *    1.0.0-beta4 clr     x64          C:\Users\Tim\.dnx\runtimes
       1.0.0-beta4 clr     x86          C:\Users\Tim\.dnx\runtimes
       1.0.0-beta4 coreclr x64          C:\Users\Tim\.dnx\runtimes
       1.0.0-beta4 coreclr x86          C:\Users\Tim\.dnx\runtimes

Это проект.json

{

    "frameworks": {
        "aspnet50":{}
    },

    "dnxcore50" : {
      "dependencies": {
        "System.Console": "4.0.0-*",
        "System.Collections": "4.0.10-*",
        "System.Linq": "4.0.0-*",
        "System.Threading": "4.0.10-*",
        "Microsoft.CSharp": "4.0.0-*"
      }
    },

    "commands": {
        "me": "Program"
    }
}

Это результат dnu build ConsoleApp

Building ConsoleApp for Asp.Net,Version=v5.0
  Using Project dependency ConsoleApp 1.0.0
    Source: C:\_Git\learndnx\ConsoleApp\project.json

  Using Assembly dependency framework/mscorlib 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\mscorlib.dll

  Using Assembly dependency framework/System 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.dll

  Using Assembly dependency framework/System.Core 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\System.Core.dll

  Using Assembly dependency framework/Microsoft.CSharp 4.0.0.0
    Source: C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.1\Microsoft.CSharp.dll


Build succeeded.
    0 Warnings(s)
    0 Error(s)

Time elapsed 00:00:00.3038706

Вот где я сбит с толку, потому что некоторые из старых видео, которые я видел, устарели, и я не знаю, где искать, чтобы узнать, что изменилось.

Я ожидаю, что dnx ConsoleApp me запустит мою программу, но, к сожалению, это не так.

Ошибка:

System.InvalidOperationException: Unable to load application or execute command 'Program'. Available commands: me.
   at Microsoft.Framework.ApplicationHost.Program.ThrowEntryPointNotfoundException(DefaultHost host, String applicationN
ame, Exception innerException)
   at Microsoft.Framework.ApplicationHost.Program.ExecuteMain(DefaultHost host, String applicationName, String[] args)
   at Microsoft.Framework.ApplicationHost.Program.Main(String[] args)

dnx
person ChiliYago    schedule 15.05.2015    source источник


Ответы (2)


У вас неправильно настроено. Я предполагаю, что вы хотите иметь следующее внутри файла project.json:

{
    "frameworks": {
            "dnx451" : {
            }
            "dnxcore50" : {
                "dependencies": {
                    "System.Console": "4.0.0-beta-*"
                }
            }
    },

    "commands": {
        "me": "run"
    }
}

Теперь запустите:

dnu restore
dnx . me

Он должен работать.

person tugberk    schedule 15.05.2015
comment
да, я вижу ошибку в разделе фреймворков. Спасибо. ключевое слово ?? Я ожидал, что это будет имя моей программы класса - person ChiliYago; 16.05.2015
comment
Где именно объявлено это ключевое слово run? Разве это не должно быть "me" : "Program" ? - person bitbonk; 17.08.2015
comment
в beta7 и более поздних версиях это dnx me вместо dnx . me - person pg0xC; 10.10.2015

Последние версии System.Console, кроме бета-версий, в настоящее время несовместимы с «dnxcore50» и содержат критические изменения.

Предлагаемые варианты:

1- Чтобы настроить полную структуру «dnx451» вместо ядра;

2- Использовать только бета-версию System.Console с "dnxcore50"; или же

3- Использовать Debug.Print() вместо Console.WriteLine()

person Shadi Namrouti    schedule 30.05.2016