_jon_ 发表于 2017-12-1 17:09:44

在互操作程序集中未能找到

如果之前有人问过这个问题,我深表歉意——我在其他帖子中看到过对这个错误的引用,但还没有找到解决方案。我有一些在2016年(VS2012)构建和运行的代码,我很难将其移植到2018年(VS2015)。我更新了2018版dll的所有引用,但我收到一堆错误,说对几个类的引用“声称它是在‘Autodesk’中定义的。AutoCAD.Interop ',但找不到它。我反复检查了我是否有正确的dll,并且我将我的项目更新到了framework 4.6,但是我似乎无法摆脱这些错误。有什么建议吗?我真的被难住了。
乔恩
**** Hidden Message *****

nobody 发表于 2017-12-4 23:04:36

这是在您自己的PC上,还是在其他人身上?在向其他人发送DLL时,我见过这样的事情,他们必须取消阻止它。

_jon_ 发表于 2017-12-5 10:29:42

感谢您的回复。DLL来自我自己的PC。我仔细检查了一下,没有一个DLL被阻止。在进一步调查后,看起来错误与我使用的民用3D互操作程序集有关,即使错误消息中显示的是AutoCAD互操作程序集。我创建了一个空白的C#项目,在两个AutoCAD互操作程序集中引用,以及来自民用3D的Base、UIBase、Land和UiLand互操作程序集。我使用下面的代码创建了一个类。错误在d.Regen语句上。如果我将“d”的类型更改为AutoCAD.Interop.Common.AcadDocument代码构建就可以了。
    class Class1
    {
      public Class1(Autodesk.AECC.Interop.UiLand.AeccDocument d)
      {
            d.Regen(AcRegenType.acActiveViewport);
      }
    }

n.yuan 发表于 2017-12-5 13:37:15

你有Autodesk吗?AutoCAD.Interop/Autodesk。项目中提到的AutoCAD.Interop.Common.dll?如果没有,您应该有,因为所有的Civil3D COM interop DLLs都依赖于普通的AutoCAD COM interop Dlls。
或者,可能是这样:
因为VisualStudio(自2012年?)会自动在项目中嵌入COM interop类型,因此,当您将项目从Civil2016升级到Civil2018时,VS可能不会创建新的项目文件(及其资源),因此项目会以某种方式继承嵌入式Autodesk。AutoCAD . Interop/公共dll?如果是这种情况,较新版本的Civil COM interop DLLs可能与早期版本的AutoCAD interops不兼容。
因此,您可能希望尝试删除所有COM interop dll(Civil3D和AutoCAD ),并重新添加它们,确保所有COM interop都来自Civil3D2018。
页: [1]
查看完整版本: 在互操作程序集中未能找到