読者です 読者をやめる 読者になる 読者になる

かわろぐ

技術、ボルダリング、セキュリティ、その他もろもろ

MENU

.NET Execution Environment (DNX) を使って Hello world!

前回のエントリでは Yeoman と Visual Studio Code を使って Mac 上で asp.net5 のアプリ作成を試してみました。

今回は、Yeoman の aspnet generator の選択肢の中にあった、 Console Application を Mac 上で試して見ようと思います。環境の準備については前回のエントリをご参照ください。

さーてやってみよう!

f:id:kawa_xxx:20150524190702p:plain

yo aspnet で Yeoman の aspnet generator を起動し、上から2つ目にある Console Application テンプレートを使います。 これでgenerateすると hello world を表示するひな形が生成されます。Visual Studio Codeでとりあえず見てみましょう。

f:id:kawa_xxx:20150524190706p:plain

Hello World Yeoman とか書きなおして実行してみましょう。

実行までの手順

$ dnu restore
$ dnx build
Building hello for DNX,Version=v4.5.1
  Using Project dependency hello 1.0.0
    Source: /Users/kawa_xxx/project/aspnet/hello/project.json

  Using Assembly dependency framework/mscorlib 4.0.0.0
    Source: /usr/local/Cellar/mono/4.0.1/lib/mono/4.5/mscorlib.dll

  Using Assembly dependency framework/System 4.0.0.0
    Source: /usr/local/Cellar/mono/4.0.1/lib/mono/4.5/System.dll

  Using Assembly dependency framework/System.Core 4.0.0.0
    Source: /usr/local/Cellar/mono/4.0.1/lib/mono/4.5/System.Core.dll

  Using Assembly dependency framework/Microsoft.CSharp 4.0.0.0
    Source: /usr/local/Cellar/mono/4.0.1/lib/mono/4.5/Microsoft.CSharp.dll

System.IO.EndOfStreamException: Failed to read past end of stream.
  at System.IO.BinaryReader.ReadChar () [0x00000] in <filename unknown>:0
  at Microsoft.CodeAnalysis.CvtResFile.ReadStringOrID (System.IO.BinaryReader fhIn) [0x00000] in <filename unknown>:0
  at Microsoft.CodeAnalysis.CvtResFile.ReadResFile (System.IO.Stream stream) [0x00000] in <filename unknown>:0
  at Microsoft.CodeAnalysis.Compilation.MakeWin32ResourceList (System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) [0x00000] in <filename unknown>:0
  at Microsoft.CodeAnalysis.CSharp.CSharpCompilation.SetupWin32Resources (Microsoft.CodeAnalysis.CSharp.Emit.PEModuleBuilder moduleBeingBuilt, System.IO.Stream win32Resources, Microsoft.CodeAnalysis.DiagnosticBag diagnostics) [0x00000] in <filename unknown>: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 <filename unknown>: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 <filename unknown>: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 <filename unknown>: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 <filename unknown>:0
  at Microsoft.Framework.PackageManager.BuildManager.Build () [0x00000] in <filename unknown>:0
  at Microsoft.Framework.PackageManager.Program+<>c__DisplayClass3_4.<Main>b__8 () [0x00000] in <filename unknown>:0
  at Microsoft.Framework.Runtime.Common.CommandLine.CommandLineApplication.Execute (System.String[] args) [0x00000] in <filename unknown>:0
  at Microsoft.Framework.PackageManager.Program.Main (System.String[] args) [0x00000] in <filename unknown>: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 <filename unknown>:0

$ dnx . run
  Hello World Yeomen

参考文献のブログによるとdnx は実行時にRoslyn をつかって build している様子。単体で build したときにコケるのに実行時はOKって…なんだろ、使っているものが違うのかな?こけている部分が Microsoft.CodeAnalysis とあるので、まだ対応出来ていないのだろうか? 

参考文献

http://blog.shibayan.jp/entry/20150312/1426155199