c# - 单元测试时参考版本差异
问题描述
我有一个使用 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?这样做会搞砸我可能拥有的任何其他安装吗?
解决方案
推荐阅读
- hyperledger-fabric - Docker swarm 链码容器随机不会在主机重启时启动
- c - 返回值不返回
- python - 为什么 Python 一直告诉我缺少位置参数,即使参数已经有位置参数?
- java - 在创建具有引用变量的对象类型的对象实例时,可以调用哪些方法?
- html - W3.CSS - 响应式布局 - w3-cell-row
- html - 如何计算这个html的高度
- html - HTML 输入类型编号不适用于 maxlength
- php - route:cache 仍然无法使用已清除的 api/routes
- postman - "message": "不支持请求方法 'GET'",
- ios - leftBarButtonItem 不显示图像,但动作有效