Nuget似乎安装了错误版本的System.Collections.Immutable

时间:2016-12-20 14:03:34

标签: c# nuget immutable-collections

我和Nuget有一个令人困惑的问题。我有许多项目声称在版本 1.3.0 时安装了System.Collections.Immutable但是如果我查看所有参考文件中的dll版本,我会看到版本 1.2。 1.0

当我用JustDecompile打开DLL时,我看到了 enter image description here 声明DLL版本确实 1.2.1.0 ,但已安装在目录 packages \ 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 package explorer打开,我会

enter image description here

2 个答案:

答案 0 :(得分:3)

NuGet包版本和程序集版本不一定相同。对两者中使用的版本没有限制。

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

如果您无法在NuGet Package Explorer中打开NuGet包,可以在zip文件应用程序(如7-zip)中打开它。或者只是将文件重命名为.zip并使用内置的Windows zip文件提取器打开它。

答案 1 :(得分:0)

最近遇到了同样的问题。 always @(*) begin if (condition_a) begin if (condition_b) begin A_next = Y; end else begin A_next = X; end end else begin A_next = 0; end end 是一个多目标程序包,因此导入到您的解决方案中的程序集的版本取决于目标。例如,如果您在.Net Framework项目中,则这是将存储在System.Collections.Immutable中的文件,因此将使用不同的版本。