【问题标题】:Restoring NuGet packages恢复 NuGet 包
【发布时间】:2017-07-15 03:35:29
【问题描述】:

我有一个包含多个项目的C# 解决方案。一些项目引用了 nuget 包。整个解决方案(但没有下载的 dll)由 git 存储库跟踪。

在将其克隆到其他地方并尝试构建 nuget 后,询问它是否应该下载丢失的包。下载后仍然缺少几个引用的库。

我可以按照以下步骤一一修复:

  1. 删除参考
  2. 删除 packages.config 文件中的包
  3. 通过 nuget 再次安装此包

有没有更好的方法来做到这一点?我尝试重新安装所有 nuget 包,但我的 Visual Studion 崩溃了。重新启动并重试后,我留下了更多丢失的包。

另一种方法是运行:

  1. PM> 卸载包 {Name}
  2. PM> 安装包 {Name}

对于每个丢失的包。缺少包裹是指所有带有黄色标记的包裹。没有卸载命令我无法安装它,因为 nuget 说它已经被引用了。

【问题讨论】:

    标签: nuget


    【解决方案1】:

    如果您尝试从命令行运行以下命令,它会恢复所有包吗?

    nuget.exe restore YourSolution.sln
    

    如果不是,那么听起来您的项目的 packages.config 文件中缺少一些包。

    您可以尝试使用 PowerShell 控制台中的重新安装参数更新软件包。

    Update-Package –reinstall <packageName>
    

    如果您愿意,也可以使用 -ProjectName 参数将其限制为一个项目。

    【讨论】:

      【解决方案2】:

      这可能是因为 .csproj 中的 .dll 路径不正确。包还原将包下载到本地目录。 它不会更改 .csproj 中程序集的引用路径,这意味着该项目仍将尝试在本地目录中查找 dll。黄色标记表示项目无法找到程序集。

      卸载项目,右键项目并选择“编辑.csproj”,并验证丢失的dll的路径。 例如 - 如果你有 NUnit,

      <Reference Include="nunit.framework">
            <HintPath>..\packages\NUnit.3.6.1\lib\net45\nunit.framework.dll</HintPath>
      </Reference>
      

      验证 dll 是否存在于“\packages\NUnit.3.6.1\lib\net45”目录中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-26
        相关资源
        最近更新 更多