NuGet打包忽略程序集信息

21

当我在命令行中运行 nuget pack MyProject.csproj 后,我遇到了以下错误:

替换标记 'author' 没有值。

我检查了我的 AssemblyInfo 文件,其中 AssemblyCompany 被指定为 "AJ Richardson"。我尝试手动将 nuspec 文件中的 $author$ 替换为 AJ Richardson,但是然后遇到了一个略微不同的错误:

替换标记 'description' 没有值。

但是 AssemblyDescription 也已经被指定了。似乎 NuGet 没有从我的 AssemblyInfo 中读取任何内容。我已经验证了 AssemblyInfo 被包含在我的项目中,并且构建操作已设置为编译。

我之前创建过几个 NuGet 包,没有遇到任何问题。这个包与我的先前的包唯一的区别是它有依赖项。

以下是我的 nuspec 的参考:

<?xml version="1.0"?>
<package>
  <metadata>
    <id>$id$</id>
    <version>1.0.0</version>
    <title>$title$</title>
    <authors>$author$</authors>
    <owners>$author$</owners>
    <licenseUrl>https://github.com/my/repo/blob/master/LICENSE</licenseUrl>
    <projectUrl>https://github.com/my/repo</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>$description$</description>
    <releaseNotes>Initial release.</releaseNotes>
    <copyright>Copyright AJ Richardson 2015</copyright>
    <tags></tags>
  </metadata>
  <dependencies>
    <dependency id="Newtonsoft.Json" version="6.0.1" />
  </dependencies>
</package>
所以我的问题是,为什么NuGet没有读取我的AssemblyInfo,我该如何说服它这样做?

所以我的问题是,为什么 NuGet 没有读取我的 AssemblyInfo,我该如何说服它这样做?

3个回答

18

我也遇到了类似的问题;尽管我构建和重新构建了程序集信息 (AssemblyInfo),但它似乎没有被使用。

我通过显式告诉 NuGet 构建 (在我的情况下是 Release 模式,并包含 pdb 符号) 来解决了这个问题:

nuget pack foo.csproj -Build -Symbols -Properties Configuration=Release


你的回答引起了我的注意,提醒我一个细节,这个细节自从我上次构建NuGet包已经忘记了三年。由于我的解决方案已经构建完成,我不想再为了打包而重新构建一遍,因此我正确地推断出可以省略-Build参数,但需要使用-Configuration开关。 - David A. Gray

15

我认为问题出在我修改了 AssemblyInfo 文件后没有再次构建项目。我重新构建后,现在它可以正常工作了。

(另外一件事,我还将 <dependencies> 放错位置了 - 它应该放在 <metadata> 内部 - 但这并不是导致我的问题的错误原因。)


1
你使用的 NuGet 版本是什么?我在使用 NuGet v3.5.0 和 VS2015 项目时遇到了同样的问题。尽管已经重新构建了项目,但它无法获取作者值。 - EndlessSpace
@EndlessSpace 我记不清具体是什么时候了,因为这已经是一年半以前的事情了。它可能是v3.x(也许是3.0或3.1?) - AJ Richardson
1
此外,请确保您正在使用与“nuget pack”相同的配置进行构建。 - AJ Richardson
1
@EndlessSpace 我这里也是同样的问题。它能够从程序集信息中获取ID、版本和标题,但无法获取作者或描述。 - Livven
1
如果这个答案对你不起作用,可以在Github上查看错误报告和讨论 https://github.com/NuGet/Home/issues/4234 @EndlessSpace - Livven
@Liven - 看起来似乎不会被修复。 - dcp

0

我也遇到了同样的问题,但后来发现有人引入了签名密钥,而我引用的程序集没有强名称。

奇怪的是我没有收到不同的错误提示。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接