VS2017 v15.7.1中Build|Publish与Rebuild生成程序集版本不一致求助
解决ASP.NET Core 2.0发布后程序集版本不一致的问题
我之前在处理VS2017下的ASP.NET Core项目时遇到过类似的版本不一致问题,结合你的场景(VS2017 v15.7.1、ASP.NET Core 2.0 MVC,Rebuild版本正确但Publish后版本跳回旧值),给你几个经过验证的解决方向:
1. 检查发布配置文件的「隐形」版本覆盖
打开项目下Properties/PublishProfiles里的.pubxml发布配置文件,看看是不是有手动设置的版本号覆盖了你的项目配置:
- 查找是否存在
<Version>、<AssemblyVersion>或<FileVersion>节点,如果有,要么删除,要么改成你需要的1.1.1.0 - 另外留意是否有
<UseAppHost>这类特殊构建选项,部分场景下会触发独立的构建流程,导致版本号异常
2. 强制发布使用本地已构建好的输出
VS2017的默认发布流程可能会重新触发一次构建,而这次构建的参数可能和你手动Rebuild的不一样。你可以让发布直接复用已有的构建产物:
- 在发布设置里选择文件系统作为发布方法,进入设置标签页,找到构建区域,勾选「使用现有构建输出」(如果你的VS版本有这个选项)
- 如果没有这个选项,直接修改
.pubxml文件,添加以下配置:
<PropertyGroup> <UseBuildOutput>true</UseBuildOutput> <BuildOutputFolder>$(SolutionDir)你的项目名\bin\Release\netcoreapp2.0\</BuildOutputFolder> </PropertyGroup>
把「你的项目名」替换成实际项目名称,这样发布时就会直接复制你Rebuild好的正确版本文件。
3. 确认项目文件的版本配置没有条件性错误
打开项目的.csproj文件,检查版本号的配置是否在Release环境下正确生效:
- 确保
<AssemblyVersion>1.1.1.0</AssemblyVersion>、<FileVersion>1.1.1.0</FileVersion>以及<PackageVersion>1.1.1</PackageVersion>(如果用到的话)没有被条件性配置覆盖 - 比如如果有类似下面的配置,要确认Release分支的版本号是正确的:
<PropertyGroup Condition="'$(Configuration)' == 'Release'"> <AssemblyVersion>1.1.1.0</AssemblyVersion> <FileVersion>1.1.1.0</FileVersion> </PropertyGroup>
4. 清理缓存,避免旧文件干扰
有时候Publish会读取缓存的旧构建产物,你可以手动清理这些目录:
- 删除项目根目录下的
obj/Release文件夹 - 清空发布目标文件夹的所有内容,然后重新执行「Clean Solution」→「Rebuild Solution」→「Publish」
5. 排查是否有第三方工具修改版本号
如果你的项目用了类似GitVersion这类自动版本控制工具,或者有自定义的构建脚本(比如.targets文件),这些工具可能会在发布阶段自动修改版本号。检查项目是否引入了这类工具,暂时禁用后再测试发布结果。
按照上面的步骤逐一排查,应该能解决发布产物和本地测试版本不一致的问题。
内容的提问来源于stack exchange,提问作者wpqs
相关产品推荐
相关产品推荐

