1

まず最初に、7.x と 8 の両方のプラットフォームを対象とする Windows Phone コード ベースの編成方法Windows Phone 7/WPF - コードベースの共有 の2 つのディスカッションを読んだことをお伝えしたいと思います 。だから、私の質問への答えかもしれないPortable Class Librariyプロジェクトタイプについて知っています。しかし、それは私の場合の答えではありません。

問題

私のプロジェクトには古いコードベースがありますWindowsClassLibraryNetFw35。このプロジェクトは、.NET Framework 3.5 を対象とするクラス ライブラリにする必要があります。その理由は、一部の依存アプリケーションが、.NET Framework 4+ がインストールされていない顧客のマシンに展開されているためです。残念ながら、お客様に環境のアップグレードを強制することはできません。

ここで、Windows 8 および Windows Phone 8 用の新しいプロジェクトを作成します。ご存じのとおり、古いライブラリを参照しようとすると、互換性のある Windows Phone プロジェクトではないため、Windows Phone 8 プロジェクトは失敗します (スクリーンショットを参照)。 ここに画像の説明を入力

質問

古いプロジェクトと新しいプロジェクトの両方をサポートできるようにするために、プロジェクトの種類を再編成する最良の方法は何ですか?

4

1 に答える 1

2

私はまだ PCL を機能させることを目指していますが、それが失敗した場合でも、同じコードを 2 つの異なるプロジェクトで使用できます。

2 つの異なるプロジェクトを作成します。1 つは Windows Phone、もう 1 つは Windows ストア アプリです。ファイルを 1 つに追加し、そのファイルを他のプロジェクトへのリンクとして追加します。これは、2 つの異なるプロジェクト間で 1 つのソース ファイルが存在することを意味しますが、それぞれのランタイム ツールでコンパイルされます。次に、コードで次のようなことを行うことができます。

void Foo()
{
    #if WinRT
        //WinRT specific code here
    #elif WindowsPhone
        //Silverlight specific code here
    #endif
}

Windows Phone および WinRT プロジェクトの [ビルド] タブにそれぞれのコンパイラ定数を追加するだけです。これははるかに粘着性のあるソリューションですが、機能する唯一のアプローチである場合があります。

于 2012-12-30T18:36:16.153 に答える