VS2022+C#开发的Tekla Open API程序无法连接Tekla Structures 2024求助
问题描述
我在Microsoft Visual Studio 2022中用C#编写了两个Tekla Structures相关程序:
- 一个用于在Tekla Structures中绘制几何图形
- 另一个用于检查应用程序与Tekla Structures的连接状态
两个程序均无VS检测到的代码错误,但运行时均抛出嵌套异常:
Inner Exception 1: TypeInitializationException: The type initializer for 'Tekla.Structures.DialogInternal.DelegateProxy' threw an exception. Inner Exception 2: RemotingException: Remote connection to Tekla Structures channel Tekla.Structures.Dialog-TeklaStructures-Console:2024.0.32149.0 failed Inner Exception 3: RemotingIOException: Cannot connect to remoting service 'Tekla.Structures.Dialog-TeklaStructures-Console:2024.0.32149.0' because it does not exist. Inner Exception 4: FileNotFoundException: Unable to find the specified file.
连接检查程序提示:Connection failed!
已通过NuGet安装以下包:
Tekla.Common.GeometryTekla.StructuresTekla.Structures.DatatypeTekla.Structures.ModelTekla.Structures.CatalogsTekla.Structures.PluginsTekla.Structures.DialogTekla.Structures.DrawingTekla.Structures.CustomPropertyPluginTekla.Application.Library
已在Google及Tekla官网查找解决方案但无果,未找到关于Tekla.Structures.Dialog-TeklaStructures-Console:2024.0.32149.0的相关信息,疑为Tekla Structures连接问题,寻求协助。
排查与解决方案
1. 版本一致性检查
异常中的2024.0.32149.0是Tekla版本号,需确保:
- 本地安装完全匹配版本的Tekla Structures 2024,包括补丁号一致
- NuGet包的版本必须与Tekla安装版本严格对应,禁止混合不同版本的Tekla包
2. 权限与运行状态确认
- 以管理员身份同时启动Tekla Structures和Visual Studio
- 确保Tekla已打开至少一个模型文件(空模型也可),否则远程通信服务不会启动
3. 验证Tekla远程服务进程
打开任务管理器,检查是否存在以下进程:
TeklaStructures.exeTekla.Structures.Remoting.Server.exe
若进程缺失,尝试重启Tekla,或通过控制面板修复Tekla安装(「程序和功能」→选择Tekla→「更改」→「修复」)
4. 项目配置调整
- 在VS项目属性中,将目标平台设置为x64(Tekla仅支持64位环境)
- 若为独立控制台程序,确保输出类型为「控制台应用(.NET Framework)」;若为插件,设置为「类库(.NET Framework)」并通过Tekla插件管理器加载
5. 精简NuGet依赖
Tekla.Structures.Dialog包用于构建Tekla内部对话框,独立连接/绘图程序无需引用。尝试移除该包及其他非必需包,仅保留核心依赖:
Tekla.Common.GeometryTekla.StructuresTekla.Structures.ModelTekla.Structures.Datatype
移除后重新编译,避免触发不必要的对话框组件远程连接逻辑
6. 连接代码规范验证
确保连接代码符合Tekla官方规范,示例:
using Tekla.Structures.Model; var model = new Model(); if (model.GetConnectionStatus()) { Console.WriteLine("Connected successfully!"); // 执行绘图等操作 model.CommitChanges(); model.Dispose(); } else { Console.WriteLine("Connection failed!"); }
注意:运行程序前必须打开Tekla模型,且项目目标框架需与Tekla兼容(Tekla 2024对应.NET Framework 4.8)
内容的提问来源于stack exchange,提问作者Mikey
相关产品推荐
相关产品推荐

