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 次 |
最近记录: |