【问题标题】:nuget: package version is not being updatednuget:软件包版本未更新
【发布时间】:2018-03-13 16:14:49
【问题描述】:

我正在尝试打包自定义 NuGet 包的新版本,当我使用 pack 命令时,我得到一个 .nupkg 文件,该文件的版本号与我的版本号不匹配'已在.nuspec file 中指定。

例子:

nuget pack mypackage.csproj -IncludeReferencedProjects -Prop Configuration=Release

.nuspec文件:

<?xml version="1.0"?>
<package >
  <metadata>
    <id>mypackage</id>
    <version>1.0.1</version>
    <authors>me</authors>
    <owners>me</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>blah</description>
    <releaseNotes></releaseNotes>
    <copyright>Copyright 2016</copyright>
    <tags>tag1 tag2</tags>
    <dependencies>
    </dependencies>
  </metadata>
</package>

我应该得到一个名为 mypackage.1.0.1.nupkg 的文件,但我得到的是一个名为 mypackage.1.0.0.nupkg 的文件

当我尝试使用包含在Properties\AssemblyInfo.cs 中的AssemblyInfo 数据并将版本声明为.nuspec 文件中的变量时,我也得到了相同的结果:

属性\AssemblyInfo.cs ... [程序集:AssemblyVersion("1.0.1")] ...

我应该在我的项目中寻找其他属性来更新我的 NuGet 包吗?

解决方案:忽略 .nuspec 文件并通过 .csproj 管理包版本

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net451;net452</TargetFrameworks>
    ...
    <AssemblyVersion>1.2.1</AssemblyVersion>
</Project>

提前致谢!

【问题讨论】:

标签: c# nuget assemblyinfo


【解决方案1】:
  1. 确保在项目属性 > 应用程序 > 程序集信息中同时更改程序集版本和文件版本。
  2. 然后确保您设置为发布模式并构建您的项目。
  3. 在项目文件夹中执行 Nuget Spec 命令
  4. 编辑规范,版本应设置为 $version$ 以便从项目中获取它,删除需要删除的行,用占位符填充。
  5. 在同一文件夹中执行您的 Nuget Pack 命令,您应该会很好。

我经常忘记构建我的项目,因此它不会更新版本。

【讨论】:

    【解决方案2】:

    我最近也犯了这个错误。 您需要使用 Properties\AssemblyFileVersion 属性为 nuget 包设置正确的值

    [assembly: AssemblyFileVersion("1.0.1")]
    

    【讨论】:

      【解决方案3】:

      好吧,我终于设法通过使用AssemblyInfo 版本进行打包来更新我的版本。看来我对这个包的发布过程完全忽略了 .nuspec 文件并从最后编译的源中获取版本。

      【讨论】:

      • 您能否发布您的解决方案,如何使用AssemblyInfo 获取您的 nuget 包版本?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多