c# - 无法在 Solidworks 插件中加载文件或装配体
问题描述
我正在尝试使用 AngelSix 的 SolidDna 库创建一个 Solidworks 插件。我按照示例使用了标准设置:
public class Integration : AddInIntegration
{
// All overrides left blank
public override void ApplicationStartup()
{
}
public override void ConfigureServices(FrameworkConstruction construction)
{
}
public override void PreConnectToSolidWorks()
{
}
public override void PreLoadPlugIns()
{
}
}
public class MySolidDnaPlugin : SolidPlugIn
{
public override string AddInTitle { get; } = "foo";
public override string AddInDescription { get; } = "bar";
public override void ConnectedToSolidWorks()
{
// This works fine...
Boo.Lang.List l = new Boo.Lang.List();
// ....But this doesn't :(
Boo.Lang.Compiler.BooCompiler c = new Boo.Lang.Compiler.BooCompiler();
}
public override void DisconnectedFromSolidWorks()
{
}
}
我正在尝试在 Boo 中添加对脚本的支持,以便用户可以即时编辑脚本。我添加了对 Boo.Lang.dll、Boo.Lang.Compiler.dll 和 Boo.Lang.Parser.dll 的引用,并且所有 3 个 DLL 都肯定被复制到 /bin 文件夹中。
我可以使用 Boo.Lang 命名空间中的类,但是一旦我尝试使用 Boo.Lang.Compiler 命名空间,它就会引发错误:
Could not load file or assembly 'Boo.Lang, Version=2.0.9.4, Culture=neutral, PublicKeyToken-32c39770e9a21a67' or one of its dependencies. The system cannot file the file specified.
在 Solidworks 外部运行时,相同的代码/设置可以正常工作,例如在控制台应用程序中。
SolidDna 文档显示了使用 注册插件 DLL 的过程regasm.exe /codebase
,因此我尝试使用 3 个 Boo DLL 运行它,但这没有任何区别。
有什么建议或指示吗?
解决方案
我的猜测是您将这些二进制文件添加到 addin 文件夹中,而进程正在solidworks.exe 文件夹中查找这些文件。
我建议你用ProcMon工具确认一下。
如果是这种情况,有多种方法可以解决此问题:
1 将这些二进制文件添加到solidworks 文件夹
2 将这些文件夹添加到路径环境变量中的任何文件夹中
3 将您的插件文件夹添加到路径环境变量
4 如果这些二进制文件以及您的插件是 .net 程序集,您可以使用 ilmerge 将它们合并为一个。
5 如果您的插件是 .net 程序集并且您可以访问 appdomain 对象,您可以订阅AssemblyResolve事件并动态提供路径。
推荐阅读
- regex - 正则表达式捕获日期,然后是文本
- kiwi-tcms - 升级到 Kiwi 5.3.1 后无法通过 Kiwi TCMS Python API 创建测试运行
- xslt - 开始运行撒克逊
- r - 编写函数以将行添加到数据框中
- vba - 如果 IsNumeric(num) And Len(num) > 1 计算一个数字的 false ?
- python - Pandas,将元组列表转换为 DataFrame 尴尬的列标题。
- smalltalk - Smalltalk 的 message to:do: 是如何在幕后实现的?
- data-structures - 用于树的孩子的适当数据结构
- arrays - VBA循环将行添加到被错误覆盖的数组?
- html - 如何更改角度材料表单字段中所需生成的asterick css?