振り返り
- 忙しくはなかったが、のんびりもできない一年だった。
- iOS はiOS7, iOS8, 64bit対応と細々とバージョンアップ。iOS7対応よりiOS8対応のほうが大変だった。
- C#でASP.NET MVC, Unity, Entity Framework, SignalR, WinForms, Silverlight などと半年以上格闘した。LINQ、拡張メソッド、async/await は便利だと再認識。Azure は思ったよりも使いやすかった。来年リリースされるであろう vNext が楽しみだ。
- 昔つくった今でも使っている自作のC++のプログラムをGoに移植中。Goはそこまで良い言語とは思えないが配布が楽。RustもよさげだがGoはGAEで動くからなー。
- 来年Go製のプロダクトをリリースすることになりそうだ。Slim3のGo版を作ってる時間があるだろうか。。。
- F#さわってみたが関数型の言語はどうもしっくりこない。
- 今年も Jewel mania で遊んでいたが最高レベルの 600 クリアして、これ以上はない感じなので卒業。
- ブレイキング・バッド は面白いといえば面白い。まだシーズン2までしかみてないが。。。
- 来年はなんとかして今年手がつけられなかったアレを作ってみたい。
Go 1.4 on windows で "go: cannot find GOROOT directory:" が出るときの対応
通常は "go: cannot find GOROOT directory:" がでるのでは Go を c:\go にインストールせず、GOROOT を設定しない場合かな。
いままでGOROOTを設定していて Go1.3 までは大丈夫だったが、Go 1.4 から "go: cannot find GOROOT directory:" とでるようになった。
Go 側の仕様変更なのかとおもったがハマっている人もあまりいない感じ。
原因は GOROOT を ジャンクションで作成しているからのようだ。
ジャンクションを使っていて初めて遭遇した動かないパターン。
シンボリックリンクはコマンドプロンプトを管理者として起動する必要があるのでできればつかいたくないんだけどな。。。
C:\dev>dir /B go* go-1.3.3 go-1.4 C:\dev>set GOROOT=c:\dev\go-1.3.3 C:\dev>set PATH=%GOROOT%\bin;%PATH% C:\dev>go version go version go1.3.3 windows/amd64 C:\dev>set GOROOT=c:\dev\go-1.4 C:\dev>set PATH=%GOROOT%\bin;%PATH% C:\dev>go version go version go1.4 windows/amd64
普通に問題なく動く。
でもc:\dev\go を GOROOTにしたいので(バージョンを切り替えやすくするため)
C:\dev>set GOROOT=c:\dev\go C:\dev>set PATH=%GOROOT%\bin;%PATH% C:\dev>mklink /J c:\dev\go c:\dev\go-1.3.3 c:\dev\go <<===>> c:\dev\go-1.3.3 のジャンクションが作成されました C:\dev>go version go version go1.3.3 windows/amd64 c:\dev>rmdir go C:\dev>mklink /J c:\dev\go c:\dev\go-1.4 c:\dev\go <<===>> c:\dev\go-1.4 のジャンクションが作成されました C:\dev>go version go: cannot find GOROOT directory: c:\dev\go
ジャンクションじゃだめなのとかとシンボリックでためす。
管理者としてコマンドプロンプトを起動しなおす。
C:\dev>rmdir go C:\dev>set GOROOT=c:\dev\go C:\dev>set PATH=%GOROOT%\bin;%PATH% c:\dev>mklink /D c:\dev\go c:\dev\go-1.4 c:\dev\go <<===>> c:\dev\go-1.4 のシンボリック リンクが作成されました C:\dev>go version go version go1.4 windows/amd64
うごいた。Go 1.3.3でももちろん問題ない。
ちなみにフルパス指定じゃないとだめなようだ。
C:\dev>rmdir go c:\dev>mklink /D go go-1.4 go <<===>> go-1.4 のシンボリック リンクが作成されました C:\dev>go version go version go1.4 windows/amd64
うまくいったようにみえるが、別にコマンドプロンプトを起動。
c:\>set GOROOT=c:\dev\go c:\>set PATH=%GOROOT%\bin;%PATH% c:\>go version go: cannot find GOROOT directory: c:\dev\go
動かない。。。
Swingアプリが Java8 u25 でやっと日本語入力でおちなくなった
Area: client-libs
Synopsis: JRE 8u20 crashes while using Japanese IM on WindowsThe VM crashes while using Swing controls when some Japanese or Chinese characters are input on Windows platform. The issue is now fixed.
See 8058858 (not public).
http://www.oracle.com/technetwork/java/javase/8u25-relnotes-2296185.html
Java8 の問題じゃなくて JRE 8u20 on Windows の問題だったのか。。。
これで Freemind と自作Swingアプリを Java8 でつかえるぜ。Update したら問題なく動くようになった。
gitblit 入門
gitblit とは
gitblit はオープンソースな git server。今は ticket も管理できるようになっている。
http://gitblit.com/
- 1.4.0 から ticketが追加。
- 1.5.0 から java7で動くようになった。
- 1.6.1 現在(そろそろ1.7.0がでそうだ)
gitblit を使うきっかけ
最初 gitlab(https://about.gitlab.com/) をつかっていたが遅い(gitのプロセス起動してパースしているので。https://gist.github.com/catatsuy/8827731 が詳しい)ので gitblit に乗り換えた。
gitblit はプラグインが groovy でかけるので気に入っている。
gitblit 自体は Java で Wicket をつかって書かれている。git 操作は JGit、検索には lucene を使っている。
いまなら gitbucket(https://github.com/takezoe/gitbucket) のほうがいいのかもしれないが、scala はよくわかんないのでカスタマイズしずらいので使っていない。gitbucket も jetty, jgit を使っているので java -jar gitbucket.war で起動する。検索は Solr かなとおもったが検索はまだ無いようだ。https://github.com/takezoe/gitbucket/issues/240
gitblit の導入
パターンとしては2つ。
WAR版:Tomcatなどのservletコンテナにwarをdeploy。
GO版:オールイン型(jetty組み込み)で解凍して gitblit.[cmd|sh] をうごかせば動くタイプ
基本GO版でいいと思う。
Windows版は http://dl.bintray.com/gitblit/releases/gitblit-1.6.1.zip
Linux版は http://dl.bintray.com/gitblit/releases/gitblit-1.6.1.tar.gz
Windows版をとってきて解凍するとディレクトリ構成は以下のようになっている。
>tree ├─amd64 ├─data │ ├─certs │ ├─git │ ├─gitignore │ ├─groovy ├─docs │ ├─bootstrap │ │ ├─css │ │ ├─img │ │ └─js │ ├─d3 │ └─prettify ├─ext ├─ia64 └─x86 >dir /B *.cmd add-indexed-branch.cmd authority.cmd gitblit-stop.cmd gitblit.cmd installService.cmd migrate-tickets.cmd reindex-tickets.cmd uninstallService.cmd >type gitblit.cmd @java -jar gitblit.jar --baseFolder data %* >type gitblit-stop.cmd @java -jar gitblit.jar --stop --baseFolder data %* >java -jar gitblit.jar --help ***************************************************************** Gitblit v1.6.1 ***************************************************************** --alias ALIAS : Alias of SSL certificate in keystore for serving https. --dailyLogFile : Log to a rolling daily log file INSTEAD of stdout. --gitPort PORT : Git Daemon port to serve. (port <= 0 will disable this connector) --help (-h) : Show this help --httpPort PORT : HTTP port for to serve. (port <= 0 will disable this connector) --httpsPort PORT : HTTPS port to serve. (port <= 0 will disable this connector) --ldapLdifFile FILE : Path to LDIF file. This will cause an in-memory LDAP server to be started according to gitblit settings --repositoriesFolder PATH : Git Repositories Folder --requireClientCertificates : Require client X509 certificates for https connections. --settings FILE : Path to alternative settings --shutdownPort PORT : Port for Shutdown Monitor to listen on. (port <= 0 will disable this monitor) --sshPort PORT : Git SSH port to serve. (port <= 0 will disable this connector) --stop : Stop Server --storePassword PASSWORD : Password for SSL (https) keystore. --tempFolder PATH : Folder for server to extract built-in webapp --userService VAL : Authentication and Authorization Service (filename or fully qualified classname) Example: java -server -Xmx1024M -jar gitblit.jar --repositoriesFolder c:\git --httpPort 80 --httpsPort 443
デフォルトで dataフォルダが基本ディレクトリになる(ここにプラグインとか証明書とかが入る)。
data/git がデフォルトの git repository になる。
gitbit のGO版の起動
>java -jar gitblit.jar 2014-10-25 10:27:38 [INFO ] ***************************************************************** 2014-10-25 10:27:38 [INFO ] _____ _ _ _ _ _ _ 2014-10-25 10:27:38 [INFO ] | __ \(_)| | | | | |(_)| | 2014-10-25 10:27:38 [INFO ] | | \/ _ | |_ | |__ | | _ | |_ 2014-10-25 10:27:38 [INFO ] | | __ | || __|| '_ \ | || || __| 2014-10-25 10:27:38 [INFO ] | |_\ \| || |_ | |_) || || || |_ 2014-10-25 10:27:38 [INFO ] \____/|_| \__||_.__/ |_||_| \__| 2014-10-25 10:27:38 [INFO ] Gitblit v1.6.1 2014-10-25 10:27:38 [INFO ] 2014-10-25 10:27:38 [INFO ] ***************************************************************** 2014-10-25 10:27:38 [INFO ] Running on Windows 8.1 (6.3) (略) 2014-10-25 10:27:48 [INFO ] jetty-9.2.3.v20140905 (略) 2014-10-25 10:28:17 [INFO ] Started @40714ms
jetty-9.2.3.v20140905 でうごいている。
最初は初期処理がはしるので時間がかかる。再起動すると Started @23528ms 半分ぐらい。
速いマシンだと Started @3047ms で立ち上がる。
gitbit へのアクセス
でアクセス可能になる。デフォルト https に対応していて(自己証明書だが)、httpではアクセスできない。
httpでアクセスする場合は data/gitblit.propertie の server.httpPort = 0 を変更するかコマンドラインオプションで --httpPort で指定が必要となる。
gitblit へのログイン
admin/adminではいれる
設定値はファイルなので
data/users.conf
にユーザを設定できる。
gitblit から clone
http://gitblit.com/setup_transport_http.html
httpsが自己証明書なのでhttps経由でgitをつかうなら
git clone --config http.sslVerify=false https://username@localhost:8843/hoge.git
のようにしないとエラーになるので注意。
gitblitをビルドする
http://gitblit.com/design.html
JDK 1.7 と Ant が必要。
>git clone https://github.com/gitblit/gitblit.git >cd gitblit >ant -p Main targets: buildApiLibrary Builds the Gitblit RPC client library buildFederationClient Builds the stand-alone Gitblit federation client buildGO Build Gitblit GO distribution buildManager Builds the stand-alone Gitblit Manager buildSite Build the Gitblit website buildWAR Build Gitblit WAR clean Cleanup all build artifacts and directories compile compiles Gitblit from source installMaven Install Gitblit JAR as Maven module installMoxie Install Gitblit JAR as a Moxie artifact nextMinorReleaseCycle prepare for the next minor release development cycle nextPointReleaseCycle prepare for the next point release development cycle publishBinaries Publish the Gitblit binaries to Bintray publishSite Publish the Gitblit site to a host report generate dependency report run Run Gitblit GO setup Setup up project tagRelease tag a new version and prepare for the next development cycle test compiles Gitblit from source and runs unit tests uploadMaven Upload Gitblit JAR to remote Maven repository Default target: compile >ant
ant では maven みたいに http://gitblit.github.io/moxie/ というantタスクをつかって jar をとってくるの(なので初回実行は待たされる)と
gitblit.properties から com.gitblit.Keys クラスが作成する。
あと src/main/distrib/data を data フォルダにコピーするなど実行に必要なことが行われる。
gitblit を ant で実行
>ant run
初回:Started @11334ms
2回目:Started @3905ms
早いな。java8でビルドしたからか?
gitblitを eclipse で実行
Eclipse などの ide(IDEAも対応している)にソースをimportしてビルド。特にEclipseプラグインを入れる必要もない。
あとは com.gitblit.GitBlitServer をJavaアプリケーションとして実行すればよい。
Started @7989ms で起動する。
なぜ同じマシンなのに ant、eclipse から実行だとGO版と起動時間ちがうのだ。
gitblit GO版だと起動に時間がかかっている遅い原因を調べる
>ant buildGO
で build/target に 配布物ができる。
展開して実行してみたが、 Started @16024ms となりやはり時間がかかっている。
log4j.properties に log4j.logger.org.eclipse.jetty=DEBUG を仕込んで確認してみた。
時間がかかっているのはここ
2014-10-25 13:09:58 [DEBUG] Extracting entry = null from jar file:/C:/oss/gitblit/build/target/gitblit-1.6.2-SNAPSHOT/gi tblit.jar 2014-10-25 13:10:07 [DEBUG] webapp=file:/C:/oss/gitblit/build/target/gitblit-1.6.2-SNAPSHOT/data/temp/webapp/
ようは gitblit.jar を解凍している部分がおそいということか。
7zip で解凍しても8秒ぐらいはかかっている。
ant or eclipseから実行だとすでに展開済みだからはやいのか。
java -jar gitblit.jar だと data/temp/webapp/ に展開して、終了時にフォルダを消している。
消さなくておいいと思ったがバージョンアップの時に困るか。。。
まあ、開発時ははやいので特にこまることはないが。。。。
gitblit でプラグイン開発
src/main/distrib/data/groovy にある *.groovy を参考にするとよい。
>dir /B src\main\distrib\data\groovy\*.groovy blockpush.groovy fisheye.groovy fogbugz.groovy jenkins.groovy localclone.groovy protect-refs.groovy redmine-fetch.groovy sendmail-html.groovy sendmail.groovy subgit.groovy thebuggenie.groovy
src/main/distrib/data/groovy のファイルを書き換えても data/groovy にコピーしないと反映されないので注意。
ちなみに ant setup でファイルで data/groovy にコピー可能。data/groovy を直接かえても ant setup はファイル日付をみているので上書きはされない。
自作のChrome ExtensionがChrome 35から無効に
重要:Chrome 拡張機能についてのお知らせ
https://productforums.google.com/forum/#!category-topic/chrome-ja/7qSACiy8EtY
要はChrome WebStore からダウンロードしたものじゃないと拡張機能は有効にならない。
デベロッパモードで入れていたものが無効になった。
削除して再インストールしたら有効になったがChromeを起動しなおすと無効になってしまう。。。。
この動きはどうもWindowsだけのようだ。MacのChromeはいまのところ大丈夫。
まだ一応回避手段が提供されている
Policy List http://www.chromium.org/administrators/policy-list-3
によるとWindowsの場合はドメインに参加しているか、否かで変わる。
ドメインに参加している場合は管理者モードでコマンドプロンプトを上げてExtensionを登録すればよい。
実際にきちんと動いた(Windows 8.1で確認)。
reg add HKLM\Software\Policies\Google\Chrome\ExtensionInstallWhitelist /v 1 /d extension_id1
reg add HKLM\Software\Policies\Google\Chrome\ExtensionInstallWhitelist /v 2 /d extension_id2
ドメインに参加していない場合は https://code.google.com/p/chromium/issues/detail?id=259236#c11 の通りにで基本OK
- http://www.chromium.org/administrators/policy-templates から http://dl.google.com/dl/edgedl/chrome/policy/policy_templates.zip をおとしてきて展開
- gpedit.msc を起動。
- コンピュータの構成→管理用テンプレート→右クリックして「テンプレートの追加と削除」で展開したファイルの中から windows/adm/en-US/chrome.adm を選ぶ。windows/adm/ja/chrome.adm でも問題なく動く。
- コンピュータの構成→管理用テンプレート→Google→Google Chrome→Extensions→Configure extension install whitelistをクリック
- 表示クリックして extension id を登録する。
- chrome://policy で登録されていればOK.
こんなことするならChromeのDev版とかをつかうほうがいいのかもしれないが、
どんなバグが仕込まれるかわからないので新しい機能を試すときぐらいしか使いたくない。
そろそろ Chrome から別のブラウザに乗り換える時期なのかもしれないな。。。
Core CLR に切り替える
Core CLR は Side by side を dotnet framework ごとやるやつなので
dotnet framework アセンブリごとをWebに含めてdeployするようになる。
Webアプリごとにdotnet frameworkのバージョンを別にもてるようになる。
c:\oss\aspnet\Home>kvm upgrade -svrc50
c:\oss\aspnet\Home>kvm alias
Alias Name
----- ----
default KRE-svrc50-x86.0.1-alpha-build-0481
切り替わったようだ。
c:\oss\aspnet\Home>cd samples\HelloMvc
c:\oss\aspnet\Home\samples\HelloMvc>set KRE_TRACE=1
c:\oss\aspnet\Home\samples\HelloMvc>k web
Loaded Module: klr.core45.dll
Found DLL Export: CallApplicationMain
...
klr.net45.dll から klr.core45.dll に変わってもきちんと動いた。
>dir /S /B %USERPROFILE%\.kre\packages\KRE-svr50-x86.0.1-alpha-build-0481 | findstr .dll | wc -w
14
>dir /S /B %USERPROFILE%\.kre\packages\KRE-svrc50-x86.0.1-alpha-build-0481 | findstr .dll | wc -w
232
dllがものすごく増えるのでAzureへのdeployさらに遅くなりそうだな。。。
それともdeploy時にAzure側でdllをとってくるようになるのかな。。。
aspnet vnext でHello MVC
c:\oss\aspnet\Home\samples\HelloMvcWeb>kpm resore
c:\oss\aspnet\Home\samples\HelloMvcWeb>dir ..\..\packages /B
Common.1.0.0
K.Roslyn.0.1-alpha-build-0137
Microsoft.AspNet.Diagnostics.0.1-alpha-build-0682
Microsoft.AspNet.FeatureModel.0.1-alpha-build-0444
Microsoft.AspNet.FileSystems.0.1-alpha-build-0162
Microsoft.AspNet.Hosting.0.1-alpha-build-0572
Microsoft.AspNet.Http.0.1-alpha-build-0444
Microsoft.AspNet.HttpFeature.0.1-alpha-build-0444
Microsoft.AspNet.Mvc.0.1-alpha-build-1268
Microsoft.AspNet.Mvc.Core.0.1-alpha-build-1268
Microsoft.AspNet.Mvc.ModelBinding.0.1-alpha-build-1268
Microsoft.AspNet.Mvc.Razor.0.1-alpha-build-1268
Microsoft.AspNet.Mvc.Razor.Host.0.1-alpha-build-1268
Microsoft.AspNet.PipelineCore.0.1-alpha-build-0444
Microsoft.AspNet.Razor.0.1-alpha-build-0197
Microsoft.AspNet.RequestContainer.0.1-alpha-build-0572
Microsoft.AspNet.Routing.0.1-alpha-build-0577
Microsoft.AspNet.Security.0.1-alpha-build-0506
Microsoft.AspNet.Security.DataProtection.0.1-alpha-build-0153
Microsoft.AspNet.Server.WebListener.0.1-alpha-build-0520
Microsoft.Bcl.Immutable.1.1.20-beta
Microsoft.Bcl.Metadata.1.0.11-alpha
Microsoft.CodeAnalysis.Common.0.7.4051916-beta
Microsoft.CodeAnalysis.CSharp.0.7.4051916-beta
Microsoft.CSharp.4.0.0.0
Microsoft.DataAnnotations.0.1-alpha-build-0100
Microsoft.DataAnnotations.Core.0.1-alpha-build-0100
Microsoft.DataAnnotations.Supplemental.0.1-alpha-build-0100
Microsoft.Framework.ConfigurationModel.0.1-alpha-build-0233
Microsoft.Framework.DependencyInjection.0.1-alpha-build-0389
Microsoft.Framework.Logging.0.1-alpha-build-0172
Microsoft.Framework.Runtime.Interfaces.0.1-alpha-build-0446
Microsoft.Net.Server.0.1-alpha-build-0520
Microsoft.Win32.Primitives.4.0.0.0
Newtonsoft.Json.5.0.8
System.ApplicationContext.4.0.0.0
System.Collections.4.0.0.0
System.Collections.Concurrent.4.0.0.0
System.ComponentModel.4.0.0.0
System.Console.4.0.0.0
System.Diagnostics.Contracts.4.0.0.0
System.Diagnostics.Debug.4.0.10.0
System.Diagnostics.Tools.4.0.0.0
System.Dynamic.Runtime.4.0.0.0
System.Globalization.4.0.10.0
System.Globalization.Extensions.4.0.0.0
System.IO.4.0.0.0
System.IO.Compression.4.0.0.0
System.IO.FileSystem.4.0.10.0
System.IO.FileSystem.Primitives.4.0.20.0
System.Linq.4.0.0.0
System.Linq.Expressions.4.0.0.0
System.Net.Primitives.4.0.10.0
System.ObjectModel.4.0.0.0
System.Reflection.4.0.10.0
System.Reflection.Emit.ILGeneration.4.0.0.0
System.Reflection.Emit.Lightweight.4.0.0.0
System.Reflection.Extensions.4.0.0.0
System.Reflection.Primitives.4.0.0.0
System.Reflection.TypeExtensions.4.0.0.0
System.Resources.ResourceManager.4.0.0.0
System.Runtime.4.0.20.0
System.Runtime.Extensions.4.0.10.0
System.Runtime.Handles.4.0.0.0
System.Runtime.InteropServices.4.0.20.0
System.Runtime.Serialization.Primitives.4.0.0.0
System.Security.Claims.0.1-alpha-build-0286
System.Security.Cryptography.4.0.0.0
System.Security.Cryptography.Encoding.4.0.0.0
System.Security.Cryptography.HashAlgorithms.SHA2.4.0.0.0
System.Security.Cryptography.RandomNumberGenerator.4.0.0.0
System.Security.Cryptography.X509Certificates.4.0.0.0
System.Security.Principal.4.0.0.0
System.Security.SecureString.4.0.0.0
System.Text.Encoding.4.0.10.0
System.Text.Encoding.4.0.20.0
System.Text.Encoding.Extensions.4.0.10.0
System.Text.RegularExpressions.4.0.0.0
System.Threading.4.0.0.0
System.Threading.Overlapped.4.0.0.0
System.Threading.Tasks.4.0.0.0
System.Threading.Tasks.4.0.10.0
System.Threading.Thread.4.0.0.0
System.Threading.ThreadPool.4.0.10.0
大量だ。。。
c:\oss\aspnet\Home\samples\HelloMvcWeb>k run
'HelloMvc' does not contain a static 'Main' method suitable for an entry pointc:\oss\aspnet\Home\samples\HelloMvcWeb>k web
Started
http://localhost:5001/ でいつもの ASP.NET MVC のシンプルな奴が表示されるはずだがエラー。
バージョン番号はきちんとメンテされていないので最新を取ってくるように変更して
c:\oss\aspnet\Home\samples\HelloMvcWeb>git diff Project.json
diff --git a/samples/HelloMvc/project.json b/samples/HelloMvc/project.json
index ead5eca..23b0450 100644
--- a/samples/HelloMvc/project.json
+++ b/samples/HelloMvc/project.json
@@ -1,10 +1,10 @@
{
"version": "0.1-alpha-*",
"dependencies": {
- "Microsoft.AspNet.Diagnostics": "0.1-alpha-build-0682",
- "Microsoft.AspNet.Hosting": "0.1-alpha-build-0572",
- "Microsoft.AspNet.Mvc": "0.1-alpha-build-1268",
- "Microsoft.AspNet.Server.WebListener": "0.1-alpha-build-0520"
+ "Microsoft.AspNet.Diagnostics": "0.1-alpha-build-*",
+ "Microsoft.AspNet.Hosting": "0.1-alpha-build-*",
+ "Microsoft.AspNet.Mvc": "0.1-alpha-build-*",
+ "Microsoft.AspNet.Server.WebListener": "0.1-alpha-build-*"
},
"commands": {
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001"c:\oss\aspnet\Home\samples\HelloMvcWeb>kpm restore
c:\oss\aspnet\Home\samples\HelloMvcWeb>k web
Started
http://localhost:5001/ でいつもの ASP.NET MVC のシンプルな奴が表示された。
c:\oss\aspnet\Home\samples\HelloMvc>dir /S /B /A-D
c:\oss\aspnet\Home\samples\HelloMvc\project.json
c:\oss\aspnet\Home\samples\HelloMvc\Startup.cs
c:\oss\aspnet\Home\samples\HelloMvc\Controllers\HomeController.cs
c:\oss\aspnet\Home\samples\HelloMvc\Models\User.cs
c:\oss\aspnet\Home\samples\HelloMvc\Views\Home\Index.cshtml
c:\oss\aspnet\Home\samples\HelloMvc\Views\Shared\_Layout.cshtml
c:\oss\aspnet\Home\samples\HelloMvc>type project.json
{
"version": "0.1-alpha-*",
"dependencies": {
"Microsoft.AspNet.Diagnostics": "0.1-alpha-build-*",
"Microsoft.AspNet.Hosting": "0.1-alpha-build-*",
"Microsoft.AspNet.Mvc": "0.1-alpha-build-*",
"Microsoft.AspNet.Server.WebListener": "0.1-alpha-build-*"
},
"commands": {
"web": "Microsoft.AspNet.Hosting server=Microsoft.AspNet.Server.WebListener server.urls=http://localhost:5001"
},
"configurations": {
"net45": {
"dependencies": {
"System.Runtime": "",
"System.ComponentModel.DataAnnotations": ""
}
},
"k10": {}
}
}
c:\oss\aspnet\Home\samples\HelloMvc>type Startup.cs
using Microsoft.AspNet.Routing;
using Microsoft.AspNet.Builder;
using Microsoft.Framework.DependencyInjection;namespace KWebStartup
{
public class Startup
{
public void Configure(IBuilder app)
{
app.UseErrorPage();app.UseServices(services =>
{
services.AddMvc();
});app.UseMvc();
app.UseWelcomePage();
}
}
}
c:\oss\aspnet\Home\samples\HelloMvc>type Controllers\HomeController.cs
using Microsoft.AspNet.Mvc;
using MvcSample.Web.Models;namespace MvcSample.Web
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View(User());
}public User User()
{
User user = new User()
{
Name = "My name",
Address = "My address"
};return user;
}
}
}
相変わらずファイルはBOMつきだな。。。。
Startup で DependencyInjection がいる。AddMvc でAsp.NET MVC で必要なクラスや Controller もコンテナに登録にいってる。
ActionResultからIActionResultに変更。
ViewBagは健在。Razor の構文はかわりなしな感じ。
Global.asax、Web.Conig がいない。
実際には https://github.com/aspnet/MusicStore/tree/dev/src/MusicStore をみると Web.Conig はいる。IISでうごかすためにもこれは残るのだろう。Razor も async/await している。。。