gpt4 book ai didi

c# - NuGet pack 命令如何生成包版本?

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:18 25 4
gpt4 key购买 nike

NuGet 版本:4.5.1.4879

当使用“项目驱动”的 NuGet 包构建(即,将 .csproj 文件传递​​给 nuget pack 命令)时,我想我了解 NuGet 将如何确定要在生成的包中使用的版本。具体来说,它将使用 AssemblyInformationalVersion如果它存在于 AssemblyInfo 中,或 AssemblyVersion如果AssemblyInformationalVersion不存在。

这似乎在我的一些程序集中按预期工作(我在程序集和包之间有一个简单的 1:1 关系 - 1 个程序集产生 1 个同名的包),但在其他程序集中则不然。

在有问题的程序集中,AssemblyInfo 包括:

[assembly: AssemblyVersion("2.0.0.0")]
[assembly: AssemblyFileVersion("2.0.0.0")]
[assembly: AssemblyInformationalVersion("2.0.0")]

在 .csproj 文件中我还有这个,除其他外(注意 <Version> 标签):

  <PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{E233E8E2-EB9E-461F-80C2-63F9AFCC425D}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>XYZ.Core.Messaging</RootNamespace>
<AssemblyName>XYZ.Core.Messaging</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>

<Version>2.0.0</Version>

<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
<TargetFrameworkProfile />
</PropertyGroup>

顺便说一句,我没有 .nuspec 文件。

尽管有这些设置,当我尝试构建包时,使用以下命令:

nuget pack XYZ.Core.Messaging.csproj  -OutputDirectory "c:\build\nuget-local" -Suffix "local"

它将包构建为 XYZ.Core.Messaging.1.0.0-local.nupkg .

对于我使用类似命令构建的其他一些包(只是一个不同的 .csproj 文件),具有相同的 AssemblyInfo 内容,那些正确构建版本为 2.0.0 的包。

那么 NuGet 可以从哪里获得 1.0.0 版本呢?

最佳答案

确保打包正确的配置。您可以打包 Release 配置,同时仅在与 Debug 配置相关的 .csproj 部分中设置 Version 元素,反之亦然。

具有程序集属性(AssemblyVersion 等)- 请注意,它们嵌入在已编译的程序集中,因此要使它们生效,您需要构建项目,并以正确的配置进行.通常情况下,您在 Debug 配置中测试代码,然后在不切换到 Release 的情况下更改版本和构建,然后打包 Release 配置。

为避免所有这些问题,最好在打包时始终构建,并始终打包显式配置:

nuget pack XYZ.Core.Messaging.csproj  -Build -Properties Configuration=Release ...

关于c# - NuGet pack 命令如何生成包版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49658131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com