为什么ASP.NET vNext"dnu build"无法在OSX上运行

Rav*_*min 22 .net c# macos dnx asp.net-core

按照https://github.com/aspnet/Home的指示在OSX上安装DNVM和DNX .

我使用generator-aspnet创建一个带有一个源文件Program.cs的控制台应用程序:

using System;

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

和package.json:

{
    "version": "1.0.0-*",
    "dependencies": {},
    "commands": {
        "run": "run"
    },
    "frameworks": {
        "dnx451": {},
        "dnxcore50": {
            "dependencies": {
                "System.Console": "4.0.0-beta-*"
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我使用它时dnu . run,它按预期工作并打印"Hello World!".

但是当我尝试通过运行从它生成程序集时,dnu build我得到以下错误:

System.IO.EndOfStreamException:无法读取流的末尾.
在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.Predicate1 filterOpt,CancellationToken cancellationToken)[0x00000] in:0 at M icrosoft.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.Func1 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.Func1 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 diagnostics)[0x00000] in:0 at Microsoft.Framework .PackageManager.BuildManager.Build()[0x00000] in:0 at Microsoft.Framework.PackageManager.Program + <> c__Dis playClass3_4.b__8()[0x00000] in:0,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(包装器托管到本机)System.Reflection.MonoMethod:System.Reflection中的InternalInvoke(System.Reflection.MonoMethod,object,object [],System.Exception&) .MonoMethod.Invoke(System.Object obj,BindingFlags invokeAttr,System.Reflection.Binder binder,System.Object [] parameters,System.Globalization.CultureInfo culture)[0x00000] in:01 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

任何想法为什么dnx.运行工程,但dnu构建不?核心库似乎被引用和加载,因此运行正常.dnu build命令缺少什么?

Jam*_*ack 11

我做的是这样的:

  1. 克隆单声道存储库,按照http://www.mono-project.com/docs/compiling-mono/中的说明编译并安装它(确保遵循从git源编译的说明)
  2. brew tap aspnet/dnx
  3. 酿造升级
  4. brew install dnvm --without-mono

这样做后,我能够成功运行dnu构建.