NuGet打包Nuspec:值不能为null或空字符串。参数名称:value

时间:2017-11-20 18:38:50

标签: build nuget-package nuspec

我正在为一个网站打包一堆javascript。这是我.nuspec的样子。

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <version>$version$</version>
    <authors>Author Person</authors>
    <owners>Company Name</owners>
    <id>PackageNameId</id>
    <title>PackageNameId</title>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Description text stuff</description>
    <copyright>Company Copyright Info</copyright>
  </metadata>
  <files>
    <file src="www\**" target="" />  <!--It just packages everything in the www folder in the same directory as this .nuspec -->
  </files>
</package>

它只包装该www文件夹中的所有内容。 {T}中的NugetPackage版本标志应该替换$version$令牌(我正在构建)。

我没有看到任何名为value的内容,所以我真的不知道为什么会发生错误。

这是完整的错误:

Attempting to build package from 'PackageName.nuspec'.

##[error]Value cannot be null or an empty string.

##[error]Parameter name: value

2 个答案:

答案 0 :(得分:12)

我怀疑您在nuget pack文件而不是nuspec文件上运行csproj时出现此错误。

正如我从此open NuGet issue中了解到的那样,只有在您的.csproj或.vbproj文件上调用<version>$version$</version>时,AssemblyInfo令牌替换(例如nuget pack)才有效。引自NuGet documentation

  

直接使用项目文件是替换令牌所必需的,因为项目是令牌值的来源。如果将nuget pack与.nuspec文件一起使用,则不会发生令牌替换。

答案 1 :(得分:0)

我使用了我正在使用的现有软件包并删除了该版本(例如<version></version>)。我尝试运行nuget pack mypackage.nuspec时遇到的错误:

Attempting to build package from 'mypackage.nuspec'.
Value cannot be null or an empty string.
Parameter name: value

nuspec文件有4个必需值:

  • 编号
  • 作者
  • 描述

由于您收到此错误,我猜想无论您的$ version $令牌是否未正确传递或正确使用。