You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:24:27