dem*_*emo 4 .net autofac visual-studio nuget nuget-package
我尝试使用 NuGet CLI 构建一个包。我运行下一个命令:
.\nuget.exe pack D:\projects\CloudStorage.Client.csproj -OutputDirectory D:\packages -Build -Symbols -Properties Configuration=Release;
Run Code Online (Sandbox Code Playgroud)
但总是出现下一个错误:
错误 NU5012:无法找到“Autofac.4.9.4.nupkg”。确保项目已经构建。
但解决方案已经建立。
我正在使用最新版本的 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>
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
当您使用类似命令时nuget.exe pack D:\projects\CloudStorage.Client.csproj -build,它会调用msbuild.exe构建项目,然后使用nuget.exe自身来创建包。Msbuild是VS的构建引擎,因此它可以很好地识别xx.csproj文件,并从正确的路径获取必要的程序集。这样就构建成功了。
但不知何故nuget.exe无法识别hintpath元素,并且由于该项目是格式化的,因此在打包过程中,它总是会尝试从Solution文件夹中的packagespackages.config文件夹中查找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>
Run Code Online (Sandbox Code Playgroud)
然后将packages文件夹从复制Solution Folder到D:\,重命名为PackagesForThisProject。
然后就可以成功创建包了。
packages.config到PackageReference.| 归档时间: |
|
| 查看次数: |
4436 次 |
| 最近记录: |