powershellで始める.net プログラミング
TRANSCRIPT
Powershellで始める.NET プログラミング
夏目 祐樹
自己紹介
本名: 夏目祐樹
HN: ルシフ, 斗山新一, 水菱啓
Twitter: @sinofseven
新卒1年目のシステムエンジニア
開発者を自称してますが、業務で書いているのがChefのため運用寄りに見られる。
先日のハッカソンで”Chef Guy”の称号を得る。
副業で、プロデューサー兼音ゲーマー。最近提督にも復職。
兵藤レナ(27)
.NET プログラミング
C#やVB.NET
Visual Studioを使うことがほとんど
基本構成で12GBの容量を持っていかれる
そのためダウンロード、インストールに時間がかかる
入れるの結構面倒
安心してください
PowerShellで.NET Frameworkが使えます
エディターはPowerShell ISE が標準でインストールされている。(VSには劣るけどインテリジェンスもあるよ)
ご注意をただし、PowerShellは.NET Frameworkのすべてのクラスを読み込んでいるわけではない。
そのため、アセンブリを自分で読み込む必要がある。
方法は4つ。・Load() メソッド・LoadFrom() メソッド・LoadWithPartialName() メソッド・Add-Type コマンドレット
本当は他にも気にすることあるけど、今回は気にしない
若干複雑(フルネームって言うらしい)
Versionまでは理解できるけど、Cultureって何??
PublicKeyTokenって何??
(作成時間の都合で未調査です)
Load メソッド
[Reflection.Assembly]::Load(“System.Net.Http, Version=4.0.0.0,
Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”)
LoadFrom メソッド
dllまでのフルパスを書く
自作のライブラリを使用するときとかはたぶんこれ(自分は使ったことはない
[Reflection.Assembly]::LoadFrom("C:¥Program Files (x86)¥Reference
Assemblies¥Microsoft¥Framework¥.NETCore¥v4.5.1¥System.Net.Http.dll")
LoadWithPartialName() メソッド
なんか見慣れえた形で指定できる(Partial Nameって言うらしい)
基本的にこれを使えばいいんじゃないかな
[Reflection.Assembly]::LoadWithPartialName("System.Net.Http")
Add-Type
PowerShel 2.0 から追加されたコマンドレット
ただLoadWithPartialName()とは見てるテーブルが違うらしく、同じアセンブリが複数バージョンあると失敗するらしい
そのときはフルネームを書けば読めるらしい(けど、使いにくいね)
Add-Type -AssemblyName System.Net.Http
Add-Type -AssemblyName "Microsoft.SqlServer.SMO, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"
まとめ
WindowsならPowerShellで.NETプログラミングできるよ
エディターならPowerShell ISEが標準で付いてるよ
.NET をフルに使おうとするとアセンブリ(dll)を読み込む必要があるよ
アセンブリの読み込みは、[Reflection.Assembly]::LoadFrom() か[Reflection.Assembly]::LoadWithPartialName() を
使えばいいよ
文法とか若干特殊だけど、そこは調べてください
[参考資料]PowerShell の Add-Type と [Reflection.Assembly]http://tech.guitarrapc.com/entry/2014/03/17/042253