asp.net - 如果版本号为零,Nuget 包还原将跳过版本号的修订部分
问题描述
我有一个项目的包配置文件
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Stylesoft.Common.Dev" version="1.0.1.0" targetFramework="net461" />
</packages>
并且在 csproj 文件中像这样引用包 dll
<Reference Include="Stylesoft.Common.Dev, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\..\..\..\..\SharedPackages\Stylesoft.Common.Dev.1.0.1.0\lib\net40\Stylesoft.Common.Dev.dll</HintPath>
</Reference>
之前这曾经工作,因为 nuget 用于恢复此文件夹中的包,Stylesoft.Common.Dev.1.0.1.0
但我不知道发生了什么变化,但现在 nuget 跳过版本的修订号,现在它创建名称Stylesoft.Common.Dev.1.0.1
跳过最后一个零的文件夹,所以我得到编译错误,因为项目试图检查这个路径中的 dll
..\..\..\..\..\SharedPackages\Stylesoft.Common.Dev.1.0.1.0\lib\net40\Stylesoft.Common.Dev.dll
我无法弄清楚发生了什么变化以及如何使其恢复与之前相同的文件夹结构中的包
任何帮助,将不胜感激!
解决方案
我遇到了同样的问题。原因可能是 nuget.exe 版本已更新并且现在正在下载不包括路径中的修订版的包,或者是托管包的位置发生了更改。在将源代码从 TFS 迁移到 Azure DevOps 时,我不确定是哪一个。所以构建管道是不同的,并且包在一个新的提要上。
我觉得最好的解决方案是让 Visual Studio 中的项目以服务器构建所期望的方式在本地工作。因此,当它正在查找文件夹中的包时,不包括其名称中的修订号,这就是它们应该在的位置。
所以解决方法是使用相同的提要和 nuget 客户端重新安装包。Visual Studio 包管理器应将包安装到正确的位置。因此,您可以确保您拥有正确的版本,或者只是希望一切正常并继续以下操作:
- 从包文件夹中删除所有包(希望您的所有项目都使用相同的文件夹,否则这可能很费力)。
- 从 Visual Studio 中清除您的 nuget 包缓存(在工具 -> 选项 -> Nuget 包管理器下有一个按钮可以执行此操作)
- 在 Visual Studio 中,打开 nuget 包管理器控制台。
- 运行“更新包-重新安装”
这可能需要一些时间,具体取决于您拥有多少包和项目,但这有望确保您的项目参考提示路径与包的安装位置匹配。
推荐阅读
- ipython - IPython /bin/bash: /bin/bashfile.txt: 权限被拒绝
- android - 如何使用 EndlessScroll 改进具有复杂 ViewHolder 的 RecyclerView
- reactjs - 如何禁用缓存 babel/webpack 反应视觉工作室
- php - Yii URL Manger 创建一个带有多个可选参数的路由
- javascript - 在反应中应用 eval 函数时,它给出了 syntaxError
- dom - 如何从 URL 中提取网页的相对 Xpath
- python - 时间序列回归模型问题
- android - 将数据从网站复制到领域数据库
- azure - Azure SQL DB 查找所有数据库中的所有表
- algorithm - 在 O(n log(log n)) 中对数组进行排序