静寂とプログラミング

技術について書いたり、日常について書いたり

HololensでUniRxを使おうとしたらビルドできなかった話

概要

Hololensアプリケーションを作成するときは、一度WSAでビルドしてVisual StudioからHololensにデプロイする必要がある。しかし、UnityでWSAにプラットフォームを変更して、VisualStudioにビルドしようとした時に怒られた。

参考

Unity+UniRxでUWP対応のWSA(Windows Store App)を開発するときの備忘録 - プログラミングで世界を変える
【Unity】Windows Store AppでUniRxのIObservableを使う - vaguely
Unity 2017で.NET4.6選択時にVisual Studio上で出るエラーを消す方法 - Qiita
今どきの HoloLens 開発環境ってどうすればいんですか! – ギャップロ

怒られた内容

主に3つエラーが出ました。
・UniRx.IObserver<TValue, TResult>' require '2' type argument(s)
・IObservable could not be found. Are you missing an assembly reference?
・IProgress could not be found. Are you missing an assembly reference?

の三つでした。予想としては、ビルドのプラットフォームのスイッチをした時に生じることから、ビルドのディレクティブの部分でややこしいことになっている気がしました。また参考にさせていただいた記事の操作をしても変わらなかったので、自分で対処することに。

結局、僕の環境ではWSAにビルド設定した時の.NetにIObservableがないよと言ってるだけっぽいので、BuildSettingsから.Netのバージョンを.Net3.xから.Net 4.xに上げることを考えました。

やったことと結果

やったこと

Build Settings > Other Setting > CofigurationのScript Runtime Versionを
.Net 3.5からExperimental(.Net 4.6 Equivalent)に変更した。

結果

Unity上のBuildが通って、hololens上でもビルドが通って正しくアプリが起動することを確認できました。