2017-10-02 8 views
0

更新:私はそのプロジェクトの内容がjson形式のテキストファイルリソースでした。これは問題なく動作するようです。これは従来のですか?私はまだ質問が残っていると思う。クラスライブラリのリソースとxamarin.android

jsonファイルを使用して作成しテストしたクラスライブラリがあります。もともと、私はこれを単にプロジェクトにアクセス可能なファイルとして持っていました。私はそれをdeserializeすることができます、それを使用して、問題ありません。

私はxamarid.androidプロジェクトを私のソリューションに追加しました。私のインターフェースを開発しました。私はまた、私が書いたアンドロイドアプリで使うつもりのクラスライブラリを参照しました。

私がアプリケーションを実行して新しいクラスを開始した後、Visual Studioは停止し、問題のjsonファイルを読み取ることができないと訴えました。

元のクラスライブラリプロジェクトはビルド時に単にファイルをディスクに出力していたので意味がありました。 Androidはその場所を知らない私はすでに試みたが、動作しません

もの:

ビルドアクション:埋め込まれたリソース/リソース/ プロジェクトリソースとしてファイルを追加する をコンパイルします。これは今、Visual Studioがファイルがバイナリであると思っていて、デシリアライズできないのはなぜですか?

エラー(現時点では明らか): System.IO.DirectoryNotFoundException: "/Data/BattingAverageFlair.json"のパスの一部を見つけることができませんでした。

public List<Flair> Flair = JsonConvert.DeserializeObject<List<Flair>>(File.ReadAllText("Data/BattingAverageFlair.json")); 
public string GetFlair(double averge) => Flair.First(m => averge <= m.Max && averge >= m.Min).Flairtext; 

理想的には私のクラスライブラリは:BattingAverageCalculatorは私のxamarin Androidアプリ、BattingAverageの完全に独立していなければなりません。

ありがとうございました!

答えて

0

イメージやアプリケーション構成ファイルなどの特別な場合を除いて、アプリケーションパッケージからファイルを開くことはできません。ここ

つのオプション:

  1. あなたが話しているJSONファイルには、開発期間中のアプリにパラメータを渡すために使用されるファイルのコンフィグ一種である場合。そのためにApp.Configの設定を使用します。

  2. ローカルストレージまたはクライアントアプリケーションデータベースとして使用している場合は、後でアクセスできるAndroid個人用ライブラリフォルダにランタイムでファイルを作成する必要があります。コード内。

このフォルダのパスにローカルストレージにファイルを読み書きすることができます

Environment.GetFolderPath(Environment.SpecialFolder.Personal) 
+0

私は意図的にUI(xamarinとは別のアプリケーションやデータロジック(上品なライブラリ)を維持しようとしています。アンドロイド)。 jsonファイルは、実行時にアクセスされるデータベースの意味であり、単純なデータ型を返します。 – Steve

+1

ファイルアクセスを抽象化することはできません。完全にプラットフォームに依存しています。おそらく、下位レベルの入力として文字列またはストリームを取得できます。 – Emad

+0

プロジェクトのリソースとして追加したときにコンテンツを追加してjsonを使用することができました。なぜなら、DLL内にラップされていて外部のものではないからです。 – Steve

関連する問題