Det*_*ium 8 nuget nuget-package nuget-cli
我正在尝试通过运行命令更新我的nuget包nuget pack -properties Configuration=Release但这会给我以下错误:
无法找到'bin/Release/{project-name}/bin/Release'.确定该项目已经建成
我不太确定为什么它会进入我的Release文件夹,然后继续转到另一个Release文件夹,因为它不存在?我在这里迷路了,我不知道该怎么做.
TL; DR
对于新的<Project Sdk="Microsoft.NET.Sdk">.csproj文件格式,dotnet pack即使它们面向.Net Framework或项目是多目标的,也可使用它们来构建NuGet软件包。从包含您的.csproj(和可选的.nuspec)的目录中运行此文件
dotnet pack MyProject.csproj -c Release
Run Code Online (Sandbox Code Playgroud)
请注意,默认情况下dotnet pack将输出.nupkg放置在/bin/Release文件夹中,这与较早nuget pack放置它的当前默认文件夹不同。
我建议您不要.nuspec为新.csproj格式创建显式文件,因为大多数设置都可以在新Project格式的“包”标签中设置。但是,如果您确实有一个.nuspec,则dotnet pack还将合并.nuspec与项目名称匹配的任何文件,从而允许$从中的版本和元数据集中替换符号.csproj。
更多详情
我也遇到了这个问题-在以前的版本中,我通常会使用这种方法对.csproj具有.nuspec相同名称的文件进行打包,以便可以使用所有$令牌,例如$id$,$version$。
但是,当尝试针对较新的<Project Sdk="Microsoft.NET.Sdk">csproj格式执行此操作时:
nuget pack {MyProject}.csproj -Prop Configuration=Release
Run Code Online (Sandbox Code Playgroud)
我收到了相同的错误(请注意的“重复项” bin\release):
错误NU5012:找不到'bin \ Release {MyProject} \ bin \ Release \'。确保已构建项目。
如果我尝试对.nuspec包含符号的字符进行打包(NuGet版本:4.7.1.5393)
nuget pack {MyProject}.nuspec -Prop Configuration=Release
Run Code Online (Sandbox Code Playgroud)
我只是收到无用的消息,因为nuget无法自动解析$令牌。
值不能为null或空字符串。参数名称:值
但是,通过使用dotnet pack而不是nuget
dotnet pack MyProject.csproj -c Release
Run Code Online (Sandbox Code Playgroud)
我到达了想要的位置,即一个多目标的NuGet包,其中的$符号与.nuspec正确同步.csproj(您可以通过.nupkg在7zip中打开文件并检查.nuspec包根目录中的最终文件来验证这一点)
我在一个多目标项目(同时针对 net452 和 netstandard2.0)上遇到了同样的问题。
我的修复/破解是将“TargetFramework=net452”添加到传递给 Nuget 的属性列表中,并手动将 netstandard2.0-output 添加到 .nuspec 文件中的文件部分
希望有人找到更好的解决方案
| 归档时间: |
|
| 查看次数: |
2229 次 |
| 最近记录: |