3

現在 .NET 4 のみに実装されているライブラリ用の NuGet パッケージがあります。しかし、さまざまなプラットフォーム (WinRT、SL5、WP8) をサポートするためにライブラリ コードを移植したので、理想的にはポータブル クラス ライブラリ (PCL) としてパッケージ化したいと考えています。 ) メンテナンスを簡素化します。ただし、ライブラリは LINQ to XML (XELements など) を使用しており、.NET 4.0.3 をターゲットにし、クライアント マシンに .NET 4.0.3 をインストールする必要があります。

したがって、プレーンな .NET 4 をターゲットにする方法に関してジレンマがあります。NuGet パッケージに関するものではなく、ユーザー ベースを制御できる場合は、.NET 4.0.3 ランタイムをインストールすることを前提条件として単純に述べることができます。ただし、ユーザーベースを制限したくないので、.NET 4.5、SL5、および WP8 をターゲットとするポータブルと、.NET4 のみをターゲットとする非ポータブルの 2 つのバージョンのライブラリが必要になるようです。ばかげているのは、LINQ to XML はもちろん .NET 4 でサポートされているため、両方のライブラリがまったく同じコードを持つことです。

私の最初の質問は、これが正しい戦略であると思われるかどうかです。別の方法として、XElement に依存するすべてのコードを PCL から取り除き、移植性のない部分に含めることもできますが、すべてのライブラリでコードがまったく同じになるため、これは正しくないようです。

2 番目の質問は、PCL から .NET 4.0.3 をターゲットにすることがまったく意味があるかどうかです。.NET 4 をターゲットとする別のバージョンがある場合、.NET 4.0.3 ランタイムがインストールされているユーザーは、プレーンではなく PCL を取得することで何かを得ることができますか? .NET 4 バージョン? .NET 4.0.3 には他にも改善点があることは知っていますが、それらは私のライブラリには影響しません。

4

1 に答える 1

2

はい、ライブラリの 2 つのバージョンを作成するのが最善だと思います。1 つは .NET 4 を対象とし、もう 1 つはサポートする他のプラットフォームを対象とするポータブル ライブラリです。ソース ファイルのリンクを使用すると、ソース コードの 2 つの異なるコピーを用意する必要がなくなり、2 つの異なる Visual Studio プロジェクトを作成するだけで済みます。

ただし、必要な NuGet パッケージは 1 つだけです。.NET 4 バージョンを lib/net40 に、ポータブル バージョンを lib/portable-net403+win8+wp8+sl5 (またはサポートするプラットフォームの任意の組み合わせ) に配置します。次に、NuGet は、プロジェクトの対象に応じて適切なものをインストールします。これをポータブル バージョンで機能させるには、NuGet 2.1 以降が必要です。

.NET 4.0.3 に関する質問に関しては、ライブラリの消費者に柔軟性を与えることについてです。あなたのライブラリを使用している人々は、それを使用してアプリケーションを作成しています。.NET 4 のサポートは、あなたほど重要ではないかもしれません。ライブラリのポータブル バージョンで .NET 4.0.3 をサポートするということは、アプリで .NET 4.0.3 を要求することを選択した場合、独自のポータブル ライブラリからライブラリを使用して、より簡単に共有できることを意味します。プラットフォーム間でのアプリ コード

于 2013-01-07T16:55:20.730 に答える