我对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项目中。
最后,如果我想让一些项目指向一个早期版本的包,该怎么办。我知道我想是能够指定在packages.config文件:
<?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>
应通过2.3) 或
<package id="Author.Library" version="(,2.4.0" targetFramework="net45" />
加载高于一切(含)2.0即应加载低于2.4的任何版本。
所以我的主要问题是为什么我不能在NuGet Package Manager中看到这两个版本的软件包?而且,我如何最好地限制适用于特定库的版本。