我在笔记本电脑(Visual Studio 2017,Windows 10)上为Dynamo写了一个简单的DLL插件,只用一种类和一种方法用C ++ / CLI编写,然后尝试将其分发给一些同事进行测试。结果令人喜忧参半:它在某些计算机上导入正常,但在其他计算机上失败。在其中一台故障机器上调试Dynamo之后,我发现这条线:
Assembly.LoadFrom(name);
HRESULT -2147024770引发了异常。
可以在下面找到堆栈跟踪。
不幸的是,互联网上对此的讨论并不多。尽管Sketchup可能更具体,但可以找到一个讨论here。建议较旧版本的Windows可能需要Windows 10 Universal C Runtime。但是,这很奇怪,因为其中一台发生故障的计算机运行Windows 10,并且显然无法安装上述运行时。我尝试安装Windows 10 SDK,但是随后Dynamo无法运行,并且在构建Dynamo时出现以下警告。
ALINK:警告AL1073:引用的程序集“ mscorlib.dll”以 不同的处理器
我试图避免安装Visual Studio,因为我们想为潜在的库用户提供预构建的DLL,因此,如果有人可以帮助我解决此问题,我将非常高兴。谢谢。
堆栈跟踪:
尝试加载程序集: C:\ Users \\ Downloads \\ TestInstallZeroTouch.dll 0x6a0已退出,代码为0(0x0)。抛出异常: mscorlib.dll中的“ System.IO.FileNotFoundException”无法加载文件 或程序集“ TestInstallZeroTouch.dll”或其依赖项之一。的 找不到指定的模块。在 System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName,字符串 codeBase,证据程序集安全性,运行时程序集locationHint, StackCrawlMark&stackMark,IntPtr,pPrivHostBinder,布尔值 throwOnFileNotFound,用于自检的布尔值,布尔值 抑制在) System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef,证据assemblySecurity,RuntimeAssembly reqAssembly, StackCrawlMark&stackMark,IntPtr,pPrivHostBinder,布尔值 throwOnFileNotFound,用于自检的布尔值,布尔值 抑制在) System.Reflection.RuntimeAssembly.InternalLoadFrom(字符串 assemblyFile,证据安全性证据,Byte [] hashValue, AssemblyHashAlgorithm hashAlgorithm,用于自省的布尔值,布尔值 在以下位置抑制SecurityChecks,StackCrawlMark和stackMark) System.Reflection.Assembly.LoadFrom(String assemblyFile)在 ProtoFFI.FFIExecutionManager.LoadAssembly(String name)在 C:\ Users \\ Downloads \ Dynamo-master \ src \ Engine \ ProtoCore \ FFI \ FFIExecutionManager.cs:line 37在ProtoFFI.CSModuleHelper.getModule(String name)中 C:\ Users \\ Downloads \ Dynamo-master \ src \ Engine \ ProtoCore \ FFI \ CLRDLLModule.cs:line