多目标项目构建NuGet包时如何固定版本为1.0.6?
解决多目标项目固定NuGet包版本时的构建失败问题
嘿,我一眼就看出问题所在了——你把NuGet依赖项的版本范围语法用到了项目自身的版本设置上,这就导致构建报错啦。<Version>属性需要的是一个明确的、不带方括号的具体版本号,而不是像引用包时用的[x.x.x]这种范围格式。
具体修复步骤:
修正项目版本格式
把配置里的<Version>[1.0.6]</Version>直接改成<Version>1.0.6</Version>,去掉方括号就行。同步程序集版本(建议操作)
为了让程序集版本和NuGet包版本保持一致,最好把<AssemblyVersion>1.0.7.0</AssemblyVersion>也改成<AssemblyVersion>1.0.6.0</AssemblyVersion>,避免版本不一致带来的混淆。
修改后的核心PropertyGroup代码块:
<PropertyGroup> <TargetFrameworks>netstandard2.0;net461</TargetFrameworks> <GeneratePackageOnBuild>true</GeneratePackageOnBuild> <RepositoryUrl></RepositoryUrl> <Copyright>-</Copyright> <Description>-</Description> <Company>-</Company> <Authors>-</Authors> <PackageProjectUrl>-</PackageProjectUrl> <SignAssembly>true</SignAssembly> <AssemblyOriginatorKeyFile>OracleExtensions.snk</AssemblyOriginatorKeyFile> <DelaySign>false</DelaySign> <RestoreProjectStyle>PackageReference</RestoreProjectStyle> <Version>1.0.6</Version> <!-- 这里改为纯版本号,去掉方括号 --> <AssemblyVersion>1.0.6.0</AssemblyVersion> <!-- 同步程序集版本 --> </PropertyGroup>
额外小提示:
- 改完之后建议先清理项目的
bin和obj目录,再重新构建,避免之前的版本缓存干扰新包生成。 - 确认你的签名配置(
SignAssembly和AssemblyOriginatorKeyFile)没问题,不过从你的描述来看,主要问题还是出在版本格式上,这个修正应该就能解决构建失败的问题了。
现在重新构建项目,就能得到版本固定为1.0.6的NuGet包啦。
内容的提问来源于stack exchange,提问作者Dmitriy
相关产品推荐
相关产品推荐

