我尝试使用 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”和现有程序集之间的区别?
同样对于提到的项目,存在 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>
当您使用类似
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 文件。通常
project
文件夹和packages
文件夹在solution
文件夹,所以它工作得很好。但是由于您的项目文件夹(在您的情况下它的名称是projects
)不在解决方案文件夹中,nuget.exe 不知道在哪里可以找到它。这就是错误消息Unable to find 'Autofac.4.9.4.nupkg'
的原因发生。
这就是构建成功但我们无法创建 nuget 包的原因。
解决方法如下:
- 创建
nuget.config
在D:\
在projects
旁边文件夹。
其内容应该是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<config>
<add key="repositoryPath" value="D:\PackagesForThisProject" />
</config>
</configuration>
然后复制packages
来自 Solution Folder
的文件夹至 D:\
, 重命名为 PackagesForThisProject
.
然后就可以成功创建包了。
关于.net - NuGet CLI 抛出错误无法找到 .nupkg,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851156/