gpt4 book ai didi

.net - NuGet CLI 抛出错误无法找到 .nupkg

转载 作者:行者123 更新时间:2023-12-05 08:52:00 26 4
gpt4 key购买 nike

我尝试使用 NuGet CLI 构建一个包。我运行下一个命令:

.\nuget.exe pack D:\projects\CloudStorage.Client.csproj -OutputDirectory D:\packages -Build -Symbols -Properties Configuration=Release;

但总是得到下一个错误:

Error NU5012: Unable to find 'Autofac.4.9.4.nupkg'. Make sure the project has been built.

但解决方案已构建。

我正在使用最新版本的 NuGet ( v5.2.0 )

在 bin/Release 文件夹中存在 Autofac,或者我没有正确理解遗漏的“.nupkg”和现有程序集之间的区别?

enter image description here

同样对于提到的项目,存在 CloudStorage.Client.nuspec 文件


当我在现在需要 SemVer 2.0.0 包的解决方案中更新一个 nuget 包(https://www.nuget.org/packages/Z.EntityFramework.Extensions/)时检测到这个问题...为了构建它,我将 Nuget 升级到 4.3.0+ 版本。结果如上。


项目 nuspec 内容:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
<metadata>
<id>CloudStorage.Client</id>
<version>$version$</version>
<description>CloudStorage Client</description>
<authors>MyTeam</authors>
<tags>$branch$</tags>
</metadata>
</package>

UPD

我创建了测试项目,其中包括 Autofac 4.9.4 并尝试为其构建包。它已成功创建。从控制台我看到 Autofac 将所有 3 个文件复制到 bin 文件夹 .pdb.dll.xml 文件...而在我的“问题”项目只有 .dll 被复制了。

最佳答案

我想问题的根本原因是 your project is not in solution folder .

xx.csproj 文件中的提示路径应该是绝对路径,例如: <HintPath>C:\Users\xxx\source\repos\PackTest\packages\Autofac.4.9.4\lib\net45\Autofac.dll</HintPath>

而不是正常的相对:

<HintPath>..\packages\Autofac.4.9.4\lib\net45\Autofac.dll</HintPath>
  1. 当您使用类似 nuget.exe pack D:\projects\CloudStorage.Client.csproj -build 的命令时, 它会调用 msbuild.exe构建项目然后使用 nuget.exe自己创建包。 Msbuild是 VS 的构建引擎,因此它可以很好地识别 xx.csproj 文件,并从正确的路径获取必要的程序集。至此构建成功。

    但不知为何nuget.exe无法识别 hintpath 元素,因为这个项目是 packages.config格式,在打包过程中,它总是会尝试从 Solution 文件夹packages 文件夹中找到 xx.nupkg 文件。

  2. 通常 project文件夹和 packages文件夹在 solution文件夹,所以它工作得很好。但是由于您的项目文件夹(在您的情况下它的名称是 projects )不在解决方案文件夹中,nuget.exe 不知道在哪里可以找到它。这就是错误消息 Unable to find 'Autofac.4.9.4.nupkg' 的原因发生。

这就是构建成功但我们无法创建 nuget 包的原因。

解决方法如下:

  1. 创建 nuget.configD:\projects 旁边文件夹。

其内容应该是:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="D:\PackagesForThisProject" />
</config>
</configuration>

然后复制packages来自 Solution Folder 的文件夹至 D:\ , 重命名为 PackagesForThisProject .

然后就可以成功创建包了。

  1. 或者您可以 Migrate the packages.config format to PackageReference .

关于.net - NuGet CLI 抛出错误无法找到 .nupkg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com