2017-08-10 5 views
0

私はNuGetには本当に新しく、それを使ってさまざまな問題を抱えています。したがって、最新の問題は、.nupkgファイルを多数生成し、ネットワーク上の共有フォルダに入れてから、NuGetを更新して更新するように設定することです。それでは、私が持っているフォルダに言わせて:NuGet newbie mayhem

Author.library.2.1.0.nupkg 
Author.library.2.2.0.nupkg 
Author.library.2.2.1.nupkg 

私は、ターゲット・フレームワーク(.NET)が(同じ溶液下)私のプロジェクトのいくつかのために異なっていることが分かったので、私はターゲットごとに新しいパッケージを生成:

Author.library.net40.2.1.0.nupkg 
Author.library.net40.2.2.0.nupkg 
Author.library.net40.2.2.1.nupkg 
Author.library.net45.2.1.0.nupkg 
Author.library.net45.2.2.0.nupkg 
Author.library.net45.2.2.1.nupkg 

次、私は解決策を右クリックしてソリューションのためのNuGetパッケージの管理選択し、[オンラインに行き、インストール済みパッケージを指摘し、該当するプロジェクト(.csprojファイル)への各パッケージをインストールすることができました。しかし今、ソリューション用のNuGet Package Managerを開いてInstalled Packagesをクリックすると、一度ライブラリのインスタンスが表示されます。私が右クリックすると、Author.library.net45パッケージを指していることがわかりますが、ライブラリの.net40バージョンを見る方法がありません。だから私は.40プロジェクトに追加することはできません。

最後に、プロジェクトのいくつかが古いバージョンのパッケージを指し示すようにしたい場合はどうなりますか? 2.0

<package id="Author.Library" version="(,2.4.0" targetFramework="net45" /> 
2.3) または

ているはず

<?xml version="1.0" encoding="utf-8"?> 
    <packages> 
    <package id="Author.Library" version="2.2.0" allowedVersions=" 
    [2.0.0,2.3.0)" targetFramework="net45" /> 
</packages> 

上記の(および含む)何をロードするべき:私は、私はpackages.configファイルであることを指定できるようにすると仮定していますことを知っています2.4より下のバージョンをロードしてください。

私の主な質問は、なぜNuGet Package Managerにパッケージの2つのバージョンが表示されないのですか?また、特定のライブラリに適用されるバージョンをどのように制限するのがベストですか?

答えて

0

両方とも同じパッケージIDがAuthor.Libraryであるため、異なるパッケージが表示されないようです。これは、packages.configファイルに表示されている内容に基づいています。

また、私は別のフレームワークを対象とするアセンブリのためだけにNuGetパッケージを分離していません。代わりに、独自のlibディレクトリ(lib/net40 lib/net45など)に1つのNuGetパッケージに入れてください。同じNuGetパッケージ内の異なるフレームワークを対象とする複数のアセンブリを持つことができます。プロジェクトにNuGetパッケージをインストールするときに、NuGetが最適なものを選択します。また、アセンブリが互換性があるため、.NET 4.0アセンブリのみを含むNuGetパッケージを.NET 4.5プロジェクトで使用することもできます。

packages.configファイルのallowedVersions属性は、プロジェクトが更新できるNuGetパッケージを制限する場合に使用するものです。