日記」カテゴリーアーカイブ

Xamarin – System.Xml.XMLDocument がPCLプロジェクトで使えない!

Xamarinでクロスプラットフォームのコードを書いていてハマった点。

少々込み入った話ではあるけれど、Xamarinでクロスプラットフォームプロジェクトを使っていてメインで共有されるコードに使えないnamespaceが結構あります。

今回はまった点としては、

・project.ios、project.UWP、project.Androidのそれぞれの参照には、System.Http.Netが定義できるが、肝心なメインのprojectの参照には追加できない。

ターゲットの定義上で、.NET Standardが定義されているのが理由のように見える。

 

ターゲットの定義に問題がありそうだけれど、各プラットフォームのプロジェクトで参照できるのに、肝心な部分でHttpClientが使えないのはちょっと痛い。

アプリの提出を優先して、各プラットフォームに書いてしまうことはできるけれど。どうしたもんかな。

追記:いろいろなサイトを検索して調べていますが、Mac版Xamarin Studioとかで設定が可能らしい。この辺をきっちり公開してる人っているのかな。。。参考リンク

追記2(解決):XMLDocumentはPCLではサポートされていないようです。参考リンク 理由はWindows Phone 8でXMLDocumentがサポートされていないからのようです。ターゲットからWindows Phone 8を外せればよいのでしょうが、PCLではデフォルトWindows 8.1とPhoneが入れられるようです。(プロファイルのリストがMac版Xamarin Studioで設定できます)

個人的にはテスト用にWindows Mobile 10を持っているけれど、一番シェアの少ない(ほとんどユーザーのいない)Windows Phoneのせいで・・・

解決策としては、System.Xml.Linq.XDocumentを使えということですね。\o_o;/

追記3:プログラムをXDocumentベースで書き換えました。結局XMLDocumentよりも素直な書き方になった感じ。まぁプログラムも2回目書き直すときは最初よりも簡単にかけるもの。仮にNativeコードベースでクロスプラットフォームのプロジェクトを作る場合は、Xamarinのクラスライブラリプロジェクトを作って、参照(Refference)で呼ぶ必要がある。DLLにして一つのモジュールとしてコンパイルする。Shared Projectは、参照設定とNuGetのパッケージは使えないので。

 

UWPサンプルソリューションはNTFSドライブにないとデバッグできない件

最近UWPでプロジェクトを進めていますが、サンプルをダウンロードしてWindows10上で実行することがあります。その時にソリューションを保存したドライブがNTFSじゃないと以下のエラーで止まります。

以下のメッセージはXamarinで公開されているサンプルコード(WorkingWithListview.UWP)で出たエラー。

1>—— 配置開始: プロジェクト:WorkingWithListview.UWP, 構成: Debug x86 ——
1>新しいクリーンなレイアウトを作成しています…
1>レイアウトにファイル (合計 18 MB) をコピーしています…
1>必要なフレームワークがインストールされているかどうかを確認しています…
1>アプリケーションをレイアウトから実行するように登録しています…
1>DEP0700: アプリケーションの登録に失敗しました。[0x80073CFD] Windows cannot deploy to path Debug of file system type exFAT.
========== 配置: 0 正常終了、1 失敗、0 スキップ ==========

今回はMac/Win両方で使う為のUSBドライブ(exFAT)だったので、デスクトップマシン内にあるハードディスク(D: 1TB)にソリューションをフォルダごとコピーして実行できるようになりましたが、CドライブがSSDで256GBでDドライブがexFATというケースはあると思います。

参考までに

やっぱりアップデートに時間が取られる

少々愚痴っぽいことを書いてみる。

個人的な事情で約3週間自宅を離れてマシンを起動しない状況でした。帰ってきて、マシンを起動して、設定を変えたか何かの理由でマシンを再起動が必要になり、スタートメニューの再起動欄にアップデートして再起動の選択肢しかない。

仕方なく、アップデートして再起動する。そしてアップデートが始まりそのまま、5分くらいアップデートがはじまる。さらにマシンが起動後、アップデートが10分くらい続く。

今のメインマインがBIOSブートということもあり、OSのディスクからの読み込みに時間がかかる。C:ドライブがSSDなのに、起動が遅い。早くUEFIに乗り換えたいが今はそんな暇はない。とにかくWindowsストアアプリをリリースして、確認することが山ほどある。

クロスプラットフォームでC#がどのくらい使えるのか、そしてダウンロード数はどのくらいなのか。

そして、VisualStudioの起動も試してみたけれど、案の定こちらもアップデートあり。インストーラーを起動してアップデートを起動するがこちらもダウンロードが遅い。OSのアップデートと、開発環境のアップデートでまた1日取られてしまう。

VisualStudioのアップデートがされてしまうと、ターゲットのOSバージョンまで新しい環境が要求される訳で、開発側とユーザー側の両方でアップデートをしないといけない。

アンドロイドでは、アプリのアップデートのためにOSすべてのアップデートを要求されるというのを聞いたことがあるけれど、Windowsもそのうちそういう状況になるのだろうか。

なにもしていないのに、時間だけが過ぎていく・・・