首页 > 解决方案 > 单元测试时参考版本差异

问题描述

我有一个使用 Nuget 包的项目,该包引用了一些 Solidworks dll 的版本 28.1.0.74。我在此工作站上安装了较新版本的 Solidworks。我的项目似乎运行良好。

我正在尝试使用单元测试来测试我的项目中的某些类。我的单元测试需要运行 Solidworks 才能完成某些测试。我遇到了版本问题。如果我在我的测试项目中添加对已安装版本的 Solidworks 的引用,我在运行单元测试时会收到以下错误:

System.IO.FileNotFoundException:无法加载文件或程序集“SolidWorks.Interop.sldworks,版本=28.1.0.74,文化=中性,PublicKeyToken=7c4797c3e4eeac03”或其依赖项之一。该系统找不到指定的文件。

这显然是在寻找旧版本的 Solidworks。

如果我删除对已安装的 Solidworks 版本的引用并添加对 NuGet 包附带的版本的引用,我的项目构建正常,但是当我尝试运行单元测试时得到以下信息:

初始化方法 TestEntityDB.SolidworksFeatureTreeTests.StartTestEnvironment 抛出异常。System.Runtime.InteropServices.COMException:检索具有 CLSID {D134B411-3689-497D-B2D7-A27CB1066648} 的组件的 COM 类工厂失败,原因是以下错误:80040154 未注册类(HRESULT 异常:0x80040154 (REGDB_E_CLASSNOTREG))。 .

这种情况的正确答案是什么?手动注册dll?这样做会搞砸我可能拥有的任何其他安装吗?

标签: c#unit-testing

解决方案


推荐阅读