如果Nuget软件包还原为零,则它会跳过版本号的修订部分

时间:2020-07-01 08:05:17

标签: asp.net .net nuget-package-restore

我有一个项目的软件包配置文件

<?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跳过版本的修订号,现在它创建了名称为{{ 1}}跳过最后一个零,所以我得到编译错误,因为该项目试图检查此路径中的dll

Stylesoft.Common.Dev.1.0.1

我无法找出更改内容以及如何使其恢复与以前相同的文件夹结构中的软件包

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:-1)

我遇到了同样的问题。原因可能是nuget.exe版本已更新,现在正在下载路径中不包括修订版的软件包,或者是在托管软件包的位置进行了更改。当将源从TFS迁移到Azure DevOps时,我不确定这是哪件事发生的。因此,构建流程不同,程序包位于新的提要上。

我觉得最好的解决方案是使Visual Studio中的项目在本地工作,就像服务器生成预期的那样。因此,当它在文件夹中寻找名称中不包含修订号的软件包时,就应该在其中。

因此解决方法是使用相同的feed和nuget客户端重新安装软件包。 Visual Studio软件包管理器应将软件包安装到正确的位置。因此,您可以确保您拥有正确的版本,或者只是希望一切正常,然后继续执行以下操作:

  1. 从packages文件夹中删除所有软件包(希望您的所有项目都使用同一文件夹,否则可能会很麻烦)。
  2. 从Visual Studio中清除nuget包缓存(在“工具->选项-> Nuget包管理器”下有一个按钮可以执行此操作)
  3. 在Visual Studio中,打开nuget软件包管理器控制台。
  4. 运行“更新包-重新安装”

这可能需要一些时间,具体取决于您拥有多少软件包和项目,但这有望确保您的项目参考提示路径与软件包的安装位置相匹配。

相关问题