Visual Studio 2017发布后可执行文件未更新至最新版本,求助
解决.NET Core 2.0独立部署后发布旧版本的问题
我之前在使用VS2017做.NET Core独立部署时也踩过类似的缓存坑,给你几个亲测有效的排查和解决思路:
1. 彻底清理项目构建缓存
VS的增量构建有时候会在重启后出现异常,导致没有生成最新的二进制文件:
- 手动删除项目根目录下的
bin和obj文件夹,这两个是构建缓存的核心目录,删掉后重新执行重新生成解决方案,再尝试发布。 - 或者通过VS菜单操作:点击「生成」→「清理解决方案」,接着点击「生成」→「重新生成解决方案」,确保所有代码都被重新编译。
2. 确保发布时覆盖旧文件
独立部署的输出目录可能残留旧文件,导致运行的不是最新版本:
- 打开发布配置界面,找到「文件发布选项」,勾选删除目标文件夹中的现有文件,这样每次发布都会清空目标目录再重新写入新文件。
- 如果已经发布过,手动删除整个发布目标文件夹(比如
bin\Release\netcoreapp2.0\win-x64\publish),再重新发布。
3. 检查发布配置的正确性
确认你的发布配置文件(.pubxml)里的关键参数是否正确:
- 确保
<SelfContained>true</SelfContained>已设置,这是独立部署的核心标识。 - 确认
<RuntimeIdentifier>和你要发布的平台匹配(比如Windows用win-x64,macOS用osx-x64),避免发布了错误平台的旧版本。 - 可以右键发布配置文件→「编辑」,直接查看和修改这些XML参数。
4. 使用CLI发布时添加无缓存参数
如果你偶尔会用.NET Core CLI命令发布,试试加上--no-cache参数强制跳过缓存:
dotnet publish -c Release -r win-x64 --no-cache
这个命令会强制重新编译所有代码,避免使用之前的缓存构建结果。
5. 验证VS的构建输出路径
有时候发布的可能是旧的构建产物:
- 右键项目→「属性」→「生成」,查看「输出路径」,确认这个路径下的文件是最新编译的(时间戳和你修改代码的时间一致)。
- 对比发布配置里的「目标位置」,确保发布的是这个输出路径下的最新文件,而不是其他旧目录。
6. 清理VS自身的组件缓存
如果以上方法都没用,可能是VS本身的组件缓存出了问题:
- 关闭所有VS窗口,找到VS的ComponentModelCache文件夹(路径一般是
C:\Users\<你的用户名>\AppData\Local\Microsoft\VisualStudio\15.0_<随机后缀>\ComponentModelCache),删除里面的所有文件。 - 重新打开VS,重新构建发布项目。
内容的提问来源于stack exchange,提问作者DonnellyOverflow
相关产品推荐
相关产品推荐

