MSBuild で ASP.NET MVC の View をプリコンパイルする
kawa.xxx
kawalog
前回のエントリでは Yeoman と Visual Studio Code を使って Mac 上で asp.net5 のアプリ作成を試してみました。
今回は、Yeoman の aspnet generator の選択肢の中にあった、 Console Application を Mac 上で試して見ようと思います。環境の準備については前回のエントリをご参照ください。
さーてやってみよう!
yo aspnet
で Yeoman の aspnet generator を起動し、上から2つ目にある Console Application テンプレートを使います。
これでgenerateすると hello world を表示するひな形が生成されます。Visual Studio Codeでとりあえず見てみましょう。
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