2015-04-30 4 views
22

Установлен DNVM и DNX на OSX, как описано через https://github.com/aspnet/Home.Почему ASP.NET vNext 'dnu build' не работает на OSX

Я использовал 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: Failed to read past end of stream.
at System.IO.BinaryReader.ReadChar() [0x00000] in :0 at Microsoft.CodeAnalysis.CvtResFile.ReadStringOrID (System.IO.BinaryReader fhIn) [0x00000] in :0 at Microsoft.CodeAnalysis.CvtResFile.ReadResFile (System.IO.Stream stream) [0x00000] in :0 at Microsoft.CodeAnalysis.Compilation.MakeWin32ResourceList (System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) [0x00000] in :0 at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.SetupWin32Resources (Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuilt, System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) [0x00000] in :0 at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileImpl (Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder moduleBuilder, System.IO.Stream win32Resources, System.IO.Stream xmlDocStream, Boolean generateDebugInfo, Microsoft.CodeAnalysis.DiagnosticBag diagnostics, 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 cancellationToken) [0x00000] in :0 at 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 cancellationToken) [0x00000] in :0 at 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 cancellationToken) [0x00000] in :0 at 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 diagnostics) [0x00000] in :0 at Microsoft.Framework.PackageManager.BuildManager.Build () [0x00000] in :0 at Microsoft.Framework.PackageManager.Program+<>c__DisplayClass3_4.b__8 () [0x00000] in :0 at Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute (System.String[] args) [0x00000] in :0 at Microsoft.Framework.PackageManager.Program.Main (System.String[] args) [0x00000] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00000] in :0

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

+0

Похоже, это известно вопрос с Mono, и сообщалось об ошибке. К сожалению, нет никакой известной работы. https://github.com/aspnet/Home/issues/498 – dbarros

+0

Gotcha. Спасибо за ссылку будет следить за ней. –

ответ

11

То, что я сделал это:

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

После этого я смог запустить ДНО построить успешно.

+0

Это должен быть принятый ответ. – chakrit

+0

Спасибо за помощь! Это хорошая работа. –

+0

Кажется, что версия 4.3.0 работает довольно хорошо. Также было исправлено исправление. Дополнительную информацию см. На странице https://github.com/aspnet/Home/issues/498. –

4

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

  1. нано /usr/local/Library/Formula/mono.rb
  2. изменяемая строка 4 и 5 к

    URL "http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2" sha256 "eaf5bd9d19818cb89483b3c9cae2ee3569643fd621560da036f6a49f6b3e3a6f" обновить

  3. заварить моно

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

    • источник dnvm.ш
    • кд ProjectDir
    • ДНУ восстановление
    • ДНУ построить
    • экспорт MONO_MANAGED_WATCHER = False (для моно ошибки, ссылка ниже)
    • DNX. пустельга
    • открыт http://localhost:5001

о моно жука - Running first ASP.NET 5 application using VSCode, DNX and kestrel results in IOException

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

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

+0

спасибо, что работает отлично со мной :) – bunjeeb

+0

Спасибо, это сработало. На моей машине, модернизируя моно, потребовалось некоторое время. Поэтому, если вы выберете этот параметр, имейте в виду, что часть может занять некоторое время (10 минут на моей машине). Я также должен был запустить dnvm upgrade -u, а затем восстановить dnu до того, как все будет работать. Не знаю, нужна ли последняя. – GrantVS

Смежные вопросы