2017-01-16 22 views
1

メインプロジェクトと同じコードを使用するバックグラウンドタスクを実行したいので、バックグラウンドタスク用の新しいプロジェクトを作成しました。私の共有コード用の共有プロジェクト。VS2015 C#UWPビルドエラー、共有プロジェクトとバックグラウンドタスク

共有コードプロジェクトにすべての共有コードを転送しました。共有プロジェクトへの参照がメインプロジェクトに追加され、プロジェクトが機能します。

共有プロジェクトへの参照を自分のバックグラウンドタスクプロジェクトに追加し、ソリューションを構築して動作します(コンパイル時のように機能します)。

とすぐに私は私は次のエラーを取得するソリューションを構築しようとする私のメインのプロジェクト、に私のバックグラウンドタスクのプロジェクトへの参照を追加する:公共のタイプは、名前空間(「BackgroundTaskの」)が

こと他の名前空間( 'SharedCode.Functions')と共通の接頭辞を共有しません。 Windowsメタデータファイル内のすべての型は、ファイル名が暗示する名前空間のサブネームスペースに存在する必要があります。 BackgroundTask C:\ Users \ User \ documents \ visualスタジオ2015 \ Projects \ Project \ BackgroundTask \ WINMDEXP

メインプロジェクト内のバックグラウンドプロジェクトへの参照を追加しないで、バックグラウンドタスクを実行しようとすると失敗します。 。

バックグラウンドタスクプロジェクトでは、一番上にSharedCodeを使用しています。 タスクが実行されるとき、共有コードを1回呼び出すだけでよい:

await SharedCode.Check();

バックグラウンドタスクプロジェクトは、SharedCodeプロジェクト自体から直接呼び出されるSharedCode.Functionsを直接使用する必要はありません。

アイデア?

そして、ちょうど参考のために、共有コードは、HTTPリクエストを作成し、SQLite.net-PCL

答えて

1

を使用してローカルデータベースを更新することは、共有プロジェクトおよびランタイムコンポーネントの基本名前空間のルールがあるようです。 (これまでこれまで聞いたことはありません)

ランタイムコンポーネントがエクスポートされるウェイコード生成フォームのため、単一のルート名前空間が必要です。これを達成する最も簡単な方法は、ドットの前に共通の接頭辞を持つプロジェクト名を使用することです。

ので、代わりに

  • と呼ばれるプロジェクトのMyApp
  • SharedCode
  • BackgroundTaskの

を有しているとあなたがそれらを呼び出す(ルート名前空間を設定)

  • のMyApp(またはMyApp.Client)
  • MyApp.Shared
  • MyApp。あなたの代わりにin-process background taskを使用することができるかもしれない場合は、自分のために物事がはるかに簡単にすることの代替として、BackgroundTaskの

(あなたの仕事が何に依存する。)

0

あなたが「古いを使用しているようです共有のWindows 8/Windowsの携帯電話プロジェクトのこの種8.

shared app

に使用された」プロジェクトテンプレート、コードが実際にあなたがここに3つのプロジェクトを見ても、つまり異なる親プロジェクトに複製されますexe/dllが2つだけ生成されます。共有プロジェクトのコードは、ウィンドウとWindowsの電話プロジェクトにコピーされます。

あなたがしようとしていることを達成するには、共有コードをホストするために通常のclass library (Universal Windows)、バックグラウンドタスクエントリポイントをホストするWindows Runtime Component (Universal Windows)ライブラリ、Blank App (Universal Windows)を作成するだけです。

バックグラウンドタスクとアプリケーションの両方が共有クラスライブラリを参照します。

また、すべての共有コードをバックグラウンドタスクライブラリ(WinMD)に残して、アプリケーションから消費することもできます。

関連する問題