.NET 7下移动.exe文件后程序未更新的问题咨询
问题原因与解决办法
核心原因:.NET 7的框架依赖部署(FDD)特性
升级到.NET 7后,如果你的项目采用框架依赖部署模式编译,生成的.exe只是一个轻量级引导程序——真正承载业务代码的是同目录下与exe同名的.dll文件(比如arbitrage2.dll)。这个引导程序的作用只是找到并加载对应dll以及.NET运行时环境。
你之前只复制exe到arbitrage4目录时,没有同步复制最新的dll文件,而arbitrage4目录里残留了旧版本的dll,导致引导程序加载了旧代码。直接编译到arbitrage4目录时,编译器会自动替换掉旧的dll,所以能正常运行最新代码。
验证与解决方法
- 确认编译模式:查看arbitrage2目录,除了exe文件,是否存在同名的
.dll文件。如果有,说明当前是框架依赖模式。 - 临时修复:复制exe时,把同目录下所有
.dll、配置文件等相关文件一起复制到arbitrage4目录,覆盖旧文件。 - 永久解决(独立部署):切换到独立部署模式编译,生成的exe会包含所有代码和必要的.NET运行时,单独复制exe即可运行最新版本:
- 在项目的
.csproj文件中添加配置:<PropertyGroup> <PublishSingleFile>true</PublishSingleFile> <SelfContained>true</SelfContained> <RuntimeIdentifier>win-x64</RuntimeIdentifier> <!-- 可根据系统调整,比如win-x86、win-arm64 --> </PropertyGroup> - 或者用命令行编译:
dotnet publish -c Release -r win-x64 --self-contained true
- 在项目的
内容的提问来源于stack exchange,提问作者user4951
相关产品推荐
相关产品推荐

