10

我对 Nuget 有一个令人困惑的问题。我有许多项目声称在1.3.0版上安装了 System.Collections.Immutable但如果我查看所有参考资料中的 dll 版本,我会看到1.2.1.0版

当我用 JustDecompile 打开 DLL 时,我看到 在此处输入图像描述 哪个声明 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 包资源管理器打开,我会得到

在此处输入图像描述

4

2 回答 2

3

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

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

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

于 2016-12-20T18:06:41.023 回答
1

最近遇到了同样的问题。System.Collections.Immutable是一个多目标包,因此导入到您的解决方案的程序集版本取决于目标。例如,如果您在 .Net Framework 项目中portable-net45+win8+wp8+wpa81,则将使用存储在其中的文件,因此版本不同。

于 2020-07-10T07:56:14.687 回答