【发布时间】: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