VS编译生成解决方案失败,但是检查源码完全正常的奇异现象
VS编译生成解决方案失败,但是检查源码完全正常的奇异现象问题说明:
A.DLL 文件内定义了接口I.Do(int a);方法,发布给宿主H程序使用,编译后没有问题运行正常。然后修改了I.Do方法,假设为:I.Do(int a, int b); 再次发布A.DLL到宿主程序H,在宿主程序内修改了相关的调用Do的方法,再次编译H程序,提示I.Do方法参数错误,仔细查看代码完全没有问题,相关调用的Do方法也绝对没有问题。 虽然代码没有任何问题,使用“生成解决方案”或“重新生成解决方式”编译无法通过,按F5或Ctrl+F5启用高度模式偶尔能正常运行,再次编译又出现错误。以前发生过这种情况,大致问题是VS使用了DLL缓存文件(副本),清除解决方案或者手工删除相关DLL文件就能解决。但是今天发生的编译错误截然不同,无论使用以前使用过的方法都没有效果。 直觉认为是程序问题而钻了牛角尖,花了半天时候在找原因. 最后找到问题根源:解决方案内引用了X.DLL, 而X.DLL引用了A.DLL,每次编译的时候会从X.DLL所在目录复制X.DLL及所有它的引用相关DLL(包括A.DLL)到Debug目录,因此每次编译后VS加载的是旧DLL内I.Do(int a)方法! PS: 其实使用手工删除相关DLL文件能解决问题的,由于X.DLL是服务端的文件,压根没想到此问题是服务端关联引起的。 解决方案: 1. 若要引用其它项目的DLL,必须将DLL文件复制到Debug目录,引用debug目录下的DLL. 2. 删除与本程序相关联的DLL(第3方组件除外),重新编译. 我们解决程序错误常用几种方法: 1. 经验,曾经遇到过此问题的解决方案。 2. 排除法,若N个替在问题无法确定时适合使用。 3. 网上找解决方案。 4. 检查源码,逐步解决,这种作法最苦逼。 扫一扫加微信:
参考文档:
Visual Studio 命令行编译解决方案 增值功能:数据字典自动生成流水号解决方案 关于FastReport.Net升级版本编译失败解决方案 使用批处理文件(.bat)安装WCF服务失败解决方案 WebAPI无法编译appBuilder.UseWebApi方法不存在解决方案 VS解决方案专业改名工具 CSFramework.Rename V1.0 - C#版 Visual Studio VS2015编译失败:全部重新生成失败,错误0 解决方案:启动WebApiServer失败,调用的目标发生了异常 原创解决方案:VS无法连接到已配置的开发Web服务器 C/S框架网|用户授权注册系统提示用户'csframework'登陆失败解决方案 代码生成器加载用户表和视图报错解决方案|C/S框架网 CSFramework快速开发框架项目改名VS解决方案改名(使用Rename改名工具) 数据字典基础资料窗体主键设置为自动生成流水号码解决方案 生成的窗体Form源码集成到VS解决方案 - C/S框架三层架构代码生成器操作指南 生成的项目模块(Project)添加到VS解决方案 - C/S框架三层架构代码生成器操作指南
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |