【问题标题】:Why is ASP.NET vNext 'dnu build' not working on OSX为什么 ASP.NET vNext 'dnu build' 在 OSX 上不起作用
【发布时间】:2015-04-30 02:55:57
【问题描述】:

按照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();
        }
    }
}

还有一个 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] in :0 在 Microsoft.CodeAnalysis.CvtResFile.ReadStringOrID (System.IO.BinaryReader fhIn) [0x00000] in :0 at Microsoft.CodeAnalysis.CvtResFile.ReadResFile (System.IO.Stream 流)[0x00000] in :0 at Microsoft.CodeAnalysis.Compilation.MakeWin32ResourceList (System.IO.Stream win32Resources,Microsoft.CodeAnalysis.DiagnosticBag 诊断)[0x00000] in :0 at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.SetupWin32Resources (Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder 模块BeingBuilt, System.IO.Stream win32Resources,Microsoft.CodeAnalysis.DiagnosticBag 诊断)[0x00000] in :0 at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.CompileImpl (Microsoft.CodeAnalysis.Emit.CommonPEModuleBuilder 模块构建器, System.IO.Stream win32Resources,System.IO.Stream xmlDocStream, Boolean generateDebugInfo, Microsoft.CodeAnalysis.DiagnosticBag 诊断,System.Predicate1 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 cancelToken) [0x00000] in :0 at Microsoft.CodeAnalysis.Compilation.Emit (Microsoft.CodeAnalysis.EmitStreamProvider peStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider pdbStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider xmlDocumentationStreamProvider, Microsoft.CodeAnalysis.EmitStreamProvider win32ResourcesStreamProvider, IEnumerable1 manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Func1 getHostDiagnostics, CancellationToken cancelToken) [0x00000] 在 :0 处 Microsoft.CodeAnalysis.Compilation.Emit (System.IO.Stream peStream, System.IO.Stream pdbStream,System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources, IEnumerable1 manifestResources, Microsoft.CodeAnalysis.Emit.EmitOptions options, Microsoft.CodeAnalysis.CodeGen.CompilationTestData testData, System.Func1 getHostDiagnostics, CancellationToken cancelToken) [0x00000] 在 :0 处 Microsoft.CodeAnalysis.Compilation.Emit (System.IO.Stream peStream, System.IO.Stream pdbStream,System.IO.Stream xmlDocumentationStream, System.IO.Stream win32Resources,IEnumerable1 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] 在 Microsoft.Framework.PackageManager.BuildManager.Build 的 0 中 () [0x00000] 在 :0 处 Microsoft.Framework.PackageManager.Program+c__DisplayClass3_4.b__8 () [0x00000] 在 :0 处 Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute (System.String[] args) [0x00000] in :0 at Microsoft.Framework.PackageManager.Program.Main (System.String[] 参数) [0x00000] in :0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) 在 System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr,System.Reflection.Binder 绑定器,System.Object[] 参数,System.Globalization.CultureInfo 文化)[0x00000] 在 :0

任何想法为什么 dnx 。运行有效,但 dnu build 无效?核心库似乎被引用和加载,因此运行正常。 dnu build 命令缺少什么?

【问题讨论】:

  • 看起来这是 Mono 的一个已知问题,并且该错误已报告。不幸的是,没有已知的解决方法。 github.com/aspnet/Home/issues/498
  • 明白了。感谢您的链接将密切关注它。

标签: c# .net macos asp.net-core dnx


【解决方案1】:

我做的是这样的:

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

完成此操作后,我能够成功运行 dnu build。

【讨论】:

  • 似乎 4.3.0 版本运行得很好。还编写了一个修复程序。请参阅github.com/aspnet/Home/issues/498 了解更多信息。
  • 我已经尝试了至少 10 次,但这些说明似乎没有帮助。这个问题好像很久了,什么时候能解决?是单声道还是 aspnet 团队的问题?在这工作之前我无法享受商品:\
  • 是否有与这些相同步骤等效的 Linux? Linux 上也存在同样的问题,但我们没有“brew”。如果这些解决方法是已知的,那么他们为什么不至少更新文档呢?我已经尝试了好几个星期了,但还没有看到 ASP.NET 真的在 Linux 机器上运行。
【解决方案2】:

【讨论】:

    【解决方案3】:

    问题似乎是 brew 指向的 mono 版本似乎不适用于最新版本的 aspnet/dnx。这是一种让它指向一个可行版本的方法。

    1. nano /usr/local/Library/Formula/mono.rb
    2. 将第 4 行和第 5 行更改为

      网址“http://download.mono-project.com/sources/mono/mono-4.0.1.44.tar.bz2” sha256 "eaf5bd9d19818cb89483b3c9cae2ee3569643fd621560da036f6a49f6b3e3a6f"

    3. brew 升级单声道

    4. 您应该能够在项目上正确运行 dnu build

      • 来源 dnvm.sh
      • cd 项目目录
      • dnu 恢复
      • dnu 构建
      • export MONO_MANAGED_WATCHER=false(对于单声道错误,请参见下面的链接)
      • dnx 。红隼
      • 打开http://localhost:5001

    关于单声道错误 - Running first ASP.NET 5 application using VSCode, DNX and kestrel results in IOException

    如果您在使用 brew 时遇到问题,请使用 brew doctor

    感谢销售https://github.com/aspnet/Home/issues/498

    【讨论】:

    • 谢谢,这行得通。在我的机器上,单声道的 brew 升级需要一段时间。因此,如果您选择此选项,请注意该部分可能需要一些时间(在我的机器上为 10 分钟)。我还必须运行 dnvm upgrade -u 然后 dnu restore 在事情解决之前。不知道是否总是需要后者。
    猜你喜欢
    • 1970-01-01
    • 2015-03-06
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2016-09-22
    • 2014-08-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多