类型初始值设定项引发异常

把云笔记里的一些总结拿出来整理一下。


前阵子,公司有个同事的电脑使用ERP时报了一个错误。反正安装过程已经不可考究了。不知道错误是如何发生的。电脑是win8.1的,.net3.5、.net4.0均安装好了。

错误信息如下。

Application UnhandledException:
“System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常。;
堆栈信息:   在 System.Data.SqlClient.SqlConnection.Dispos
e(Boolean disposing)
   在 System.ComponentModel.Component.Finalize()
好吧。这个信息够简洁的。我在网上搜索了一下。发现这种问题出现的几率真少。不过还是被我找到了解决方案。
进入下面的两个文件夹。(如果是64位)
C:\Windows\Microsoft.NET\Framework\v2.0.50727\CONFIG
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\CONFIG
把这个文件换一下。用一个无损的替换他。

再次打开,问题终于解决了额。


<think>我们正在解决VM.Core.TempVmSolution类型初始值设定项引发异常问题。根据引用内容,异常可能由多种原因引起,我们将逐步排查。首先,根据引用[1]和引用[2],我们需要注意以下几点:1.检查加密狗是否插好,程序是否以管理员权限运行,以及是否取消首选32位勾选(如果适用)。2.确保VM4.0版本为最新(20220415以上),并打上最新补丁(如20220505补丁)。如果打过补丁,需要将补丁目录下的文件替换到二次开发项目的EXE生成路径下。3.结束所有VM相关进程,防止双开。引用[2]补充说明,VM启动时会拉起四个进程,而VMSDK程序启动时会拉起两个进程。因此,我们只需要结束VisionMaster.exe和VisionMasterServerAPP.exe进程即可。可以使用以下代码在程序初始化时结束进程:```csharpKillProcess("VisionMaster");KillProcess("VisionMasterServerApp");//定义KillProcess方法voidKillProcess(stringprocessName){foreach(System.Diagnostics.ProcesspinSystem.Diagnostics.Process.GetProcesses()){if(p.ProcessName==processName){try{p.Kill();p.WaitForExit();}catch(Exceptione){Console.WriteLine(e.Message);}}}}```4.运行环境检测工具(EnvironmentDetectionTool.exe)检查VM安装环境是否正常。5.如果之前打开过多个版本的VM,尝试重启电脑或打开相应版本的VM来拉起服务。6.检查是否严格按照环境配置步骤,使用ImportRef工具添加引用,且每个项目只使用一次该工具。另外,引用[3]提到一个类似异常类型初始值设定项引发异常)的案例,原因是程序集名称不匹配。在反射加载时,配置的程序集名称(MyItem.SQLServerDal)与实际生成的程序集名称(SQLServerDal.dll)不一致。因此,我们需要检查:-项目中引用的程序集名称是否正确,特别是与VM相关的引用。-确保所有依赖项(尤其是VM.Core等关键程序集)的版本与当前使用的VM版本一致,并且已经正确引用。针对VM.Core.TempVmSolution初始化异常,我们还可以采取以下措施:-检查应用程序的配置文件(如App.config或Web.config)中是否有关于VM.Core.TempVmSolution的配置项,并确保配置正确。-查看异常详细信息(堆栈跟踪和内部异常),以确定具体是哪个部分初始化失败。综上所述,请按照以下步骤操作:步骤1:确保环境配置正确-以管理员权限运行程序。-检查加密狗状态。-运行环境检测工具(EnvironmentDetectionTool.exe)确保环境正常。步骤2:更新VM并替换补丁文件-确认VM版本,更新到最新版本并打上最新补丁。-将补丁文件(VisionMaster4.0.0\Development\V4.0.0\ComControls\bin\x64下的所有文件)复制到二次开发项目的输出目录(如Debug或Release文件夹)。步骤3:结束相关进程-在程序初始化前结束VisionMaster和VisionMasterServerApp进程(使用上述代码)。步骤4:检查程序集引用-使用ImportRef工具添加引用,确保引用正确。-检查引用的程序集版本是否一致,特别是VM.Core等核心程序集。-确认项目生成的目标平台(x86或x64)与VM环境匹配(一般用x64)。步骤5:检查配置文件-如果有配置文件,检查与VM相关的配置节是否正确。步骤6:查看异常详细信息-捕获并记录异常详细信息,特别是内部异常,以定位问题根源。如果以上步骤仍不能解决问题,建议重启计算机,并尝试重新安装VM(注意版本一致)。相关问题:1.如何获取VM4.0的最新补丁?2.如何正确使用ImportRef工具添加引用?3.如何配置VM二次开发项目的目标平台?4.如何查看VM相关进程是否正在运行?5.在捕获到VM.Core.TempVmSolution异常时,如何获取详细的错误信息?</think>### VM.Core.TempVmSolution 初始化异常解决方案 针对`VM.Core.TempVmSolution`类型初始值设定项引发异常,结合引用内容,请按以下步骤排查: #### 1. **基础环境检查** [^1] ```csharp // 强制结束冲突进程的代码示例 KillProcess("VisionMaster"); KillProcess("VisionMasterServerApp"); KillProcess("VmModuleProxy"); void KillProcess(string processName) { foreach (var p in Process.GetProcessesByName(processName)) { try { p.Kill(); p.WaitForExit(3000); } catch { /* 记录日志 */ } } } ``` - ✅ 以**管理员权限**运行程序 - ✅ 检查加密狗是否正常连接 - ✅ 在VS项目属性中取消勾选`首选32位`(目标平台选x64) - ✅ 重启计算机清除残留进程 #### 2. **版本与补丁维护** [^1][^2] - 检查VM版本号(需≥20220415) - 安装最新补丁(如20220505补丁) - 补丁文件替换路径: ``` VisionMaster4.0.0\Development\V4.0.0\ComControls\bin\x64 → 复制到项目输出目录(如Debug/Release) ``` #### 3. **程序集引用验证** [^3] ```xml <!-- 检查app.config/web.config配置 --> <add name="TempVmSolution" type="VM.Core.TempVmSolution, MyProduct.VM.Core" /> ``` - 🔍 确认程序集名称一致性: - 项目引用名称 vs 实际DLL文件名 - 配置文件中程序集名称 vs 程序集属性 - 通过**反射加载测试**: ```csharp var assembly = Assembly.Load("MyProduct.VM.Core"); var type = assembly.GetType("VM.Core.TempVmSolution"); ``` #### 4. **环境检测工具诊断** [^1] 运行环境检测工具: ``` VisionMaster4.0.0\Applications\Tools\EnvironmentDetectionTool.exe ``` - 检查.NET Framework版本(需4.7.2+) - 验证VC++运行库是否完整 - 确认显卡驱动兼容性 #### 5. **引用管理规范** [^2] - 使用`ImportRef.exe`工具添加引用 - 单个项目**仅执行一次**引用导入 - 检查引用路径是否包含空格/中文(建议全英文路径) #### 6. **异常信息深度分析** 在初始化代码处捕获详细异常: ```csharp try { var solution = new TempVmSolution(); } catch (TypeInitializationException ex) { // 重点记录内部异常 File.WriteAllText("error.log", $"InnerException: {ex.InnerException?.Message}\n" + $"StackTrace: {ex.InnerException?.StackTrace}"); } ``` ### 典型解决案例 某用户遇到相同异常后: 1. 发现`MyProduct.VM.Core.dll`实际输出为`VM.Core.dll` 2. 修改项目属性→程序集名称→保持与配置文件一致 3. 使用`ImportRef.exe`重新导入引用 4. 问题解决[^3] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值