2015-04-30 6 views
22

DNVM e DNX installati su OSX come indicato tramite https://github.com/aspnet/Home.Perché ASP.NET vNext 'dnu build' non funziona su OSX

ho usato generator-aspnet per creare un'applicazione console con un file sorgente, Program.cs:

using System; 

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

e un package.json:

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

Quando eseguo usando dnu . run, funziona come previsto e stampa "Hello World!".

Tuttavia quando provo a generare assemblee da eseguendo dnu build ottengo il seguente errore:

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

Tutte le idee perché dnx. funziona, ma dnu build no? Le librerie core sembrano essere referenziate e caricate, quindi la corsa funziona. Cosa manca con il comando dnu build?

+0

sembra che sia un noto problema con Mono e il bug è stato segnalato. Sfortunatamente, non c'è un work-around noto. https://github.com/aspnet/Home/issues/498 – dbarros

+0

Gotcha. Grazie per il collegamento, lo terremo d'occhio. –

risposta

11

Quello che ho fatto è questo:

  1. clonare il repository mono, compilarlo ed installarlo seguendo le indicazioni qui http://www.mono-project.com/docs/compiling-mono/ (assicurarsi di seguire le istruzioni per la compilazione da git source)
  2. brew tap aspnet/dnx
  3. birra aggiornamento
  4. birra installare dnvm --without-mono

Dopo aver fatto questo sono stato in grado di eseguire DNU costruire con successo.

+0

Questa dovrebbe essere la risposta accettata. – chakrit

+0

Grazie per l'aiuto! Questo è un buon lavoro. –

+0

Sembra che la versione 4.3.0 sia abbastanza carina. Inoltre è stata scritta una correzione. Vedi https://github.com/aspnet/Home/issues/498 per maggiori informazioni. –

4

Il problema sembra essere brew indica una versione di mono che non sembra funzionare bene con l'ultima build di aspnet/dnx. Ecco un modo per farlo puntare a una versione praticabile.

  1. nano /usr/local/Library/Formula/mono.rb
  2. cambiato la linea 4 e 5 per

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

  3. birra aggiornare mono

  4. Dovresti essere in grado di eseguire correttamente dnu build sul progetto

    • origine dnvm.sh
    • cd ProjectDir
    • DNU ripristino
    • DNU costruire
    • export MONO_MANAGED_WATCHER = false (per mono bug, vedi link sotto)
    • dnx. gheppio
    • aperta http://localhost:5001

su mono bug - Running first ASP.NET 5 application using VSCode, DNX and kestrel results in IOException

Se avete problemi con birra, utilizzare brew medico

Grazie alla salerth https://github.com/aspnet/Home/issues/498

+0

grazie mille funziona perfettamente con me :) – bunjeeb

+0

Grazie, ha funzionato. Sulla mia macchina, l'aggiornamento della preparazione di mono ha richiesto un po 'di tempo. Quindi, se scegli questa opzione, tieni presente che la parte può richiedere un po 'di tempo (10 minuti sulla mia macchina). Ho anche dovuto eseguire dnvm upgrade -u e poi dnu ripristinare prima che le cose si risolvessero. Non so se quest'ultimo è sempre necessario. – GrantVS