对于这个问题我表示歉意,如果有更好的建议请告诉我,我很乐意改进。
我正在尝试通过动态调用属于另一个应用程序的程序集来创建一个对象。
以下PowerShell代码对我来说运行得很好:
[Reflection.Assembly]::LoadFrom("C:\Program Files\Vendor\Product\ProductAPI.dll")
$bobject = new-object ProductAPI.BasicObject
$bobject.AddName("Some Name")
我正在尝试用C#做同样的事情。根据StackOverflow上其他帖子的建议,我目前有以下代码:
System.Reflection.Assembly myDllAssembly =
System.Reflection.Assembly.LoadFile("C:\\Program Files\\Vendor\\Product\\ProductAPI.dll");
System.Type BasicObjectType = myDllAssembly.GetType("ProductAPI.BasicObject");
var basicObjectInstance = Activator.CreateInstance(BasicObjectType);
最后一行代码会导致TargetInvocationException异常。
{"无法加载文件或程序集'AnotherObject, Version=1.2.345.0, Culture=neutral, PublicKeyToken=null'或其其中一个依赖项。系统找不到指定的文件。"}
看起来BasicObject构造函数试图调用AnotherObject(从相同文件夹中的AnotherObject.dll中)但找不到它。
有没有什么提示可以解决这个问题?
FUSLOGVW.exe
(程序集绑定日志查看器) 来查看哪些内容无法加载,它将展示给你正在失败的加载项(以及.NET加载器正在寻找的位置)。 - Richard