2016-12-20 59 views
3

我对Nuget有一个令人困惑的问题。我有一些谁主张在版本1.3.0 安装System.Collections.Immutable的项目,但如果我看DLL的版本中所有引用我看到的版本1.2.1.0Nuget似乎安装了错误版本的System.Collections.Immutable

当我打开了它宣称的DLL版本确实1.2.1.0但已经被安装在目录封装,JustDecompile我看到 enter image description here 的DLL \ System.Collections.Immutable.1.3.0

典型packages.config文件将包含

<package id="System.Collections.Immutable" version="1.3.0" targetFramework="net452" /> 

和的csproj是

<Reference 
    Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL"> 
    <HintPath>$(SolutionDir)packages\System.Collections.Immutable.1.3.0\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath> 
    <Private>True</Private> 
</Reference> 

如果我尝试打开从库中下载的NuGet包,并与NuGet包管理器中打开我得到

enter image description here

+0

当我在匿名类型列表中添加'OrderBy'时,我开始面对这个问题,但是从nuget安装'System.Collections.Immutable'包解决了错误。 – Anil

回答

2

的NuGet包版本和程序集版本不一定相同。对于哪一个版本都没有限制。

因此,看看System.Collections.Immutable 1.3.0程序集版本是1.2.1.0为NuGet包中的程序集。

如果您无法打开NuGet包资源管理器中的NuGet包,则可以在zip文件应用程序(如7-zip)中打开它。或者只需将该文件重命名为.zip,然后使用内置的Windows zip文件提取器将其打开。

+0

以前版本的库和nuget包都是1.2.0,然后库促进到1.2.1,nuget包到1.3.0。我同意,理论上他们不需要匹配,但这种气味。对相同包的以前nuget版本的随机采样具有程序集版本和nuget版本匹配。 – bradgonesurfing

+0

我在corefx上添加了一个问题,要求解释。 https://github.com/dotnet/corefx/issues/14640 – bradgonesurfing