KatsuYuzuのブログ

.NET の開発をメインとした日記です。

NuGetのインストール時に拡張SDKを参照させる方法 #win8dev_jp #wpdev_jp

以前に書いたWindows ストアアプリのActionライブラリをUniversalApp向けにalphaリリースしました。
Windows ストアアプリとWindowsPhoneで共通のViewにActionを配置できます。また、前はBhaviors SDKを手動で参照するようにお願いしてましたが、自動化できました!

サンプルプロジェクトやライブラリ内容の充実、アプリはいずれ……。あと、codeplexがreadme.mdの日本語リンクで文字化けしたり、結局project pageは別途編集だったりで不便なのでgithubに移行しました。

NuGetのインストール時に拡張SDKを参照させる方法

f:id:KatsuYuzu:20140508074743p:plain
通常の方法(nuspecへの記述)ではGACまたは同梱のライブラリしか追加できませんので、拡張SDKを参照させるにはNuGetのインストールをPowerShellで拡張します。
パッケージに下記のtools\install.ps1を含めます。

param($installPath, $toolsPath, $package, $project)
Write-Host "Adding Behaviors SDK (XAML)"
$project.Object.References.AddSDK("Behaviors SDK (XAML)", "BehaviorsXamlSDKManaged, version=12.0")

NuGetのインストール時にPowerShellが実行され、プロジェクトにSDKReferenceが追加されます。

<SDKReference Include="BehaviorsXamlSDKManaged, version=12.0">
  <Name>Behaviors SDK %28XAML%29</Name>
</SDKReference>

f:id:KatsuYuzu:20140319003126p:plain
NuGetのバージョン2からinstall.ps1でインストールを拡張できて、さらにVS2012からプロジェクトのインターフェイスが拡張されていたようです。

記事末の参考サイトでは$frameworkName.Version.Buildで条件分岐してますが、WindowsPhoneのプロジェクトのバージョン情報がが8.1で条件に合わないこと、そもそもnugetの対象プロジェクトを合わせていることから、無条件でAddSDKするようにしました。

参考

githubにnuspecとかinstall.ps1とかあるのでみてください。