Почему 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?
Ответы
Ответ 1
Я сделал следующее:
- клонировать монохранилище, компилировать и устанавливать его в соответствии с указаниями здесь http://www.mono-project.com/docs/compiling-mono/ (обязательно следуйте инструкциям для компиляции с git источник)
- brew коснитесь aspnet/dnx
- brew upgrade
- brew установить dnvm --without-mono
После этого я смог успешно запустить dnu.
Ответ 2
Это известная ошибка Mono: https://bugzilla.xamarin.com/show_bug.cgi?id=29499
Обсуждение здесь: https://github.com/aspnet/Home/issues/498
Ответ 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