powershellで始める.net プログラミング

10
Powershellで始める .NET プログラミング 夏目 祐樹

Upload: -

Post on 12-Jan-2017

252 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Powershellで始める.net プログラミング

Powershellで始める.NET プログラミング

夏目 祐樹

Page 2: Powershellで始める.net プログラミング

自己紹介

本名: 夏目祐樹

HN: ルシフ, 斗山新一, 水菱啓

Twitter: @sinofseven

新卒1年目のシステムエンジニア

開発者を自称してますが、業務で書いているのがChefのため運用寄りに見られる。

先日のハッカソンで”Chef Guy”の称号を得る。

副業で、プロデューサー兼音ゲーマー。最近提督にも復職。

兵藤レナ(27)

Page 3: Powershellで始める.net プログラミング

.NET プログラミング

C#やVB.NET

Visual Studioを使うことがほとんど

基本構成で12GBの容量を持っていかれる

そのためダウンロード、インストールに時間がかかる

入れるの結構面倒

Page 4: Powershellで始める.net プログラミング

安心してください

PowerShellで.NET Frameworkが使えます

エディターはPowerShell ISE が標準でインストールされている。(VSには劣るけどインテリジェンスもあるよ)

Page 5: Powershellで始める.net プログラミング

ご注意をただし、PowerShellは.NET Frameworkのすべてのクラスを読み込んでいるわけではない。

そのため、アセンブリを自分で読み込む必要がある。

方法は4つ。・Load() メソッド・LoadFrom() メソッド・LoadWithPartialName() メソッド・Add-Type コマンドレット

本当は他にも気にすることあるけど、今回は気にしない

Page 6: Powershellで始める.net プログラミング

若干複雑(フルネームって言うらしい)

Versionまでは理解できるけど、Cultureって何??

PublicKeyTokenって何??

(作成時間の都合で未調査です)

Load メソッド

[Reflection.Assembly]::Load(“System.Net.Http, Version=4.0.0.0,

Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a”)

Page 7: Powershellで始める.net プログラミング

LoadFrom メソッド

dllまでのフルパスを書く

自作のライブラリを使用するときとかはたぶんこれ(自分は使ったことはない

[Reflection.Assembly]::LoadFrom("C:¥Program Files (x86)¥Reference

Assemblies¥Microsoft¥Framework¥.NETCore¥v4.5.1¥System.Net.Http.dll")

Page 8: Powershellで始める.net プログラミング

LoadWithPartialName() メソッド

なんか見慣れえた形で指定できる(Partial Nameって言うらしい)

基本的にこれを使えばいいんじゃないかな

[Reflection.Assembly]::LoadWithPartialName("System.Net.Http")

Page 9: Powershellで始める.net プログラミング

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"

Page 10: Powershellで始める.net プログラミング

まとめ

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