Подтвердить что ты не робот

Почему ASP.NET vNext 'dnu build' не работает на OSX

Установлен DNVM и DNX на OSX, как описано https://github.com/aspnet/Home.

Я использовал generator-aspnet для создания консольного приложения с одним исходным файлом, Program.cs:

using System;

namespace HelloWorldConsole
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            Console.ReadLine();
        }
    }
}

и package.json:

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

Когда я запускаю его с помощью dnu . run, он работает так, как ожидалось, и печатает "Hello World!".

Однако, когда я пытаюсь сгенерировать сборки из него, запустив dnu build, я получаю следующую ошибку:

System.IO.EndOfStreamException: Не удалось прочитать прошлый конец потока.
в System.IO.BinaryReader.ReadChar() [0x00000] в: 0 в Microsoft.CodeAnalysis.CvtResFile.ReadStringOrID(System.IO.BinaryReader fhIn) [0x00000] в: 0 на Microsoft.CodeAnalysis.CvtResFile.ReadResFile(System.IO.Stream поток) [0x00000] в: 0 at Microsoft.CodeAnalysis.Compilation.MakeWin32ResourceList (System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag диагностика) [0x00000] в: 0 на Microsoft.CodeAnalysis.CSharp.CSharpCompilation.SetupWin32Resources (Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuilt, System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag диагностика) [0x00000] в: 0 на Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileImpl(Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, System.IO.Stream win32Resources, System.IO.Stream xmlDocStream, Boolean generateDebugInfo, Microsoft.CodeAnalysis.DiagnosticBag диагностика, System.Predicate 1 filterOpt, CancellationToken cancellationToken) [0x00000] in <filename unknown>:0 at Microsoft.CodeAnalysis.Compilation.Compile (Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, System.IO.Stream win32Resources, System.IO.Stream xmlDocStream, Boolean generateDebugInfo, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, System.Predicate 1 filterOpt, CancellationToken cancelationToken) [0x00000] в: 0 на Microsoft.CodeAnalysis.Compilation.Emit(Microsoft.CodeAnalysis.EmitStreamProvider peStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider pdbStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider xmlDocumentationStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider win32ResourcesStreamProvider, IEnumerable 1 manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Func 1 getHostDiagnostics, CancellationToken cancelationToken) [0x00000] в: 0 на Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, IEnumerable 1 manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Func 1 getHostDiagnostics, CancellationToken cancelationToken) [0x00000] в: 0 на Microsoft.CodeAnalysis.Compilation.Emit(System.IO.Stream peStream, System.IO.Stream pdbStream, System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, IEnumerable 1 manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, CancellationToken cancellationToken) [0x00000] in <filename unknown>:0 at Microsoft.Framework.Runtime.Roslyn.RoslynProjectReference.EmitAssembly (System.String outputPath) [0x00000] in <filename unknown>:0 at Microsoft.Framework.PackageManager.ProjectBuilder.Build (System.String name, System.String outputPath) [0x00000] in <filename unknown>:0
at Microsoft.Framework.PackageManager.BuildContext.Build (System.Collections.Generic.List
1 диагностика) [0x00000] в: 0 в Microsoft.Framework.PackageManager.BuildManager.Build() [0x00000] в: 0 на Microsoft.Framework.PackageManager.Program + < > c__DisplayClass3_4.b__8 () [0x00000] в: 0 на Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute(System.String [] args) [0x00000] в: 0 at Microsoft.Framework.PackageManager.Program.Main(System.String [] args) [0x00000] в: 0 at (обертка, управляемая для родной) System.Reflection.MonoMethod: InternalInvoke (System.Reflection.MonoMethod, object, object [], System.Exception &) в System.Reflection.MonoMethod.Invoke(System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object [] параметры, System.Globalization.CultureInfo культура) [0x00000] в: 0

Любые идеи, почему dnx. но работает dnu нет? Кажется, что базовые библиотеки загружаются и загружаются, поэтому работа работает. Что пропало с командой dnu build?

4b9b3361

Ответ 1

Я сделал следующее:

  • клонировать монохранилище, компилировать и устанавливать его в соответствии с указаниями здесь http://www.mono-project.com/docs/compiling-mono/ (обязательно следуйте инструкциям для компиляции с git источник)
  • brew коснитесь aspnet/dnx
  • brew upgrade
  • brew установить dnvm --without-mono

После этого я смог успешно запустить dnu.

Ответ 3

Проблема, кажется, brew указывает на версию моно, которая, похоже, не работает с последней сборкой aspnet/dnx. Вот способ заставить его указывать на работоспособную версию.

  • nano/usr/local/Library/Formula/mono.rb
  • изменили строки 4 и 5 на

    url " http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2" sha256 "eaf5bd9d19818cb89483b3c9cae2ee3569643fd621560da036f6a49f6b3e3a6f"

  • brew upgrade mono

  • Вы должны иметь возможность правильно запускать dnu на проекте

    • источник dnvm.sh
    • cd projectdir
    • восстановление dnu
    • dnu build
    • export MONO_MANAGED_WATCHER = false (для моно-ошибки см. ссылку ниже)
    • dnx. пустельга
    • открыть http://localhost:5001

about mono bug - Запуск первого приложения ASP.NET 5 с использованием VSCode, DNX и kestrel приводит к IOException

Если у вас есть проблемы с brew, используйте brew doctor

Благодаря salerth https://github.com/aspnet/Home/issues/498