【问题标题】:Nuspec metadata and sharedassemblyinfo.csNuspec 元数据和 sharedassemblyinfo.cs
【发布时间】:2017-06-20 21:21:30
【问题描述】:

我有一个用 c# 编写的多项目解决方案。我创建了一个 sharedassemblyinfo.cs 文件以在我的解决方案中的不同项目之间共享版本号等。我需要将此项目构建为 nuget 包。在我的 nuspec 文件中,有 $version$ 之类的占位符,它们从 assemblyinfo.cs 文件中提取程序集版本。由于我使用的是 sharedassemblyinfo.cs 文件来保存程序集版本,有没有办法可以修改我的 nuspec 文件以从 sharedassemblyinfo.cs 而不是 assemblyinfo.cs 中提取版本?

【问题讨论】:

  • 您是否尝试共享现有的 assemblyinfo.cs(作为链接)而不是创建新的?如果您使用命令行,您可以立即在 .nuspec 中定义 ovveride 版本,see
  • 我在解决方案级别创建了一个 sharedassemblyinfo.cs,每个项目都添加了对此的引用作为链接。然后每个项目也有它自己的 assemblyinfo.cs 文件,用于项目特定的东西,如 guid、描述等。 sharedassemblyinfo 具有在所有项目之间共享的程序集版本。我不熟悉命令行或您引用我的内容。我只是添加一个 nuspec 文件并使用 msbuild 构建我的项目来创建包。它在程序集版本上引发错误,因为它正在查看程序集信息而不是共享程序集信息
  • 不是,AFAIK,这是由 nuget 设计的,以便在使用令牌 $version$ 时在 assemblyinfo.cs 中使用 AssemblyVersionAttribute 属性。如果你想将其更改为使用 sharedassemblyinfo.cs,你必须编辑 nuget 源代码以加载该文件,深入研究 NuGet 源代码,我发现它并不像人们想象的那么简单。
  • 此外,如果您将 $version$ 标记替换为一个值,那么该值将优先并用于包文件名中。您还可以在命令行上设置版本,它优先于上述所有内容。
  • 这太糟糕了。我想我只需要在 nuspec 文件中手动设置版本号。只是好奇我是否可以以某种方式自动执行此操作以使用 sharedassemblyinfo.cs 文件并从那里提取版本号。没什么大不了的,这只是另一个手动步骤,当我想要推送新版本时,我必须记住要做。我必须在 sharedassemblyinfo.cs 中更新我的版本号,然后还要更新 nuspec 文件中的版本。

标签: c# visual-studio nuget nuget-package nuget-spec


【解决方案1】:

有没有办法可以修改我的 nuspec 文件以从 sharedassemblyinfo.cs 而不是 assemblyinfo.cs 中提取版本?

不,AFAIK,这是由 nuget 设计的,以便在使用令牌 $version$ 时在 assemblyinfo.cs 中使用 AssemblyVersionAttribute 属性。如果你想将其更改为使用 sharedassemblyinfo.cs,则必须编辑 nuget 源代码以加载 sharedassemblyinfo.cs 文件,在深入研究 NuGet 源代码后,我发现它并不像人们想象的那么简单。但是你可以在GitHub 上讨论这个问题。

此外,您可以手动更改 nuspec 文件中的版本号。如果您将 $version$ 标记替换为一个值,则该值将优先并用于包文件名中。您还可以在命令行上设置版本,该版本优先于上述所有内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-14
    • 2018-07-18
    • 2018-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多