1

問題:

シンプルにしようと思います。

  1. 同一のソリューションが 2 つありますが、1 つは .NET 2.0 でビルドされ、もう 1 つは .NET 4.0 でビルドされます。
  2. どちらのソリューションも、同じプロジェクトを 1 つ保持していますが、1 つのビルドは .NET 2.0 と .NET 4.0 で作成されています。
  3. 両方のプロジェクトが同じファイルを参照しています
  4. このアプローチの目的は、ヘルパー ライブラリを構築する必要があるが、複数のプラットフォーム (.NET 2.0、.NET 4.0 など) をサポートする必要があることです。
  5. ソリューション、プロジェクト、およびソース ファイルはすべて同じフォルダーにあります。

私たちの目的:

NLog に Nuget を使用したいと考えています。ただし、.NET 2.0 プロジェクトが Nuget NLog 2.0 ライブラリにのみバインドされ、.NET 4.0 プロジェクトが Nuget NLog 4.0 ライブラリにのみバインドされるようにしたいと考えています。

これをサポートする Nuget はありますか? つまり、構成など。

ありがとう。

4

2 に答える 2

1

NLog パッケージには、.NET 2.0 および .NET 4.0 プラットフォーム用のアセンブリが含まれています。このようにアセンブリを同じパッケージに入れ、NLog を依存関係として指定する必要があります。パッケージをプロジェクトに追加すると、NuGet は NLog とパッケージの両方の正しいアセンブリを取得します。

于 2013-05-29T21:51:40.927 に答える
0

Ufuk が言ったように、NLog パッケージには既に .NET 2.0 および 4.0 のアセンブリが含まれています。

解決策が 1 つしかない場合:

  • NLog をインストールします。正しいフレームワークが自動的に参照されます。
  • NuGet Spec コマンドを実行します。
  • 作成した nuspec を編集します (おそらく NuGet パッケージ エクスプローラーを使用して)。
  • NuGet パックを実行します。NLog を含む、インストール済みパッケージの依存関係が自動的に追加されます。

ただし、2 つのソリューションがあり、1 つのパッケージを作成したいと考えています。この場合:

  • 次の構造のフォルダーを作成します (NLog アセンブリを含めることはできません)。

    PACKAGE_NAME
    |  lib
    |  |  net40
    |  |  |  (insert here your .NET 4.0 assemblies)
    |  |  net45
    |  |  |  (insert here your .NET 4.5 assemblies)
    
  • このフォルダーのルートに移動します。

  • NuGet Spec コマンドを実行します。
  • Package.nuspec の名前を PACKAGE_NAME.nuspec に変更します。
  • パッケージ データを使用して PACKAGE_NAME.nuspec を (おそらく NuGet パッケージ エクスプローラーを使用して) 編集し、メタデータ内に次の行を含めます。

    <dependencies>
        <dependency id="NLog" version="REPLACE_WITH_VERSION" />
    </dependencies>
    
  • NuGet Pack コマンドを実行します。パッケージが作成されます (NuGet パッケージ エクスプローラーで問題がないかどうかを確認できます)。

これで、パッケージをインストールするすべての人がアセンブリを正しく参照できるようになります。

詳細が必要な場合は、このリンクを確認してください。

于 2013-05-30T22:36:48.763 に答える