[英]Can't do Assembly.Load(String) with a referenced assembly unless I instantiate a class within that assembly first. How to solve?
我这里有一个很奇怪的问题。 除非我在程序集中实例化一个类,否则看起来没有程序集错误。
例如:
Assembly.Load("something.blah, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
Type mqType = Type.GetType(query.Attribute(fullyQualifiedName + ", " + assemblyInfo);
Object mq = Activator.CreateInstance(mqType);
在Assembly.Load上引发FileNotFound异常
这个:
Assembly.Load("something.blah, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null")
new someClassInAssembly();
Type mqType = Type.GetType(query.Attribute(fullyQualifiedName + ", " + assemblyInfo);
Object mq = Activator.CreateInstance(mqType);
工作正常。 是的,即使在Assembly.Load之后实例化了它,所以显然在编译过程中是个问题。 我如何明确确保程序集在运行时已加载且可找到,是否在某处设置了编译设置,我该怎么办?
通过提供路径,确保正在加载您认为正在加载的程序集:
AssemblyName an = AssemblyName.GetAssemblyName(filePath);
Assembly.Load(an);
坦白地说,如果只是一个参考或几个参考,只需在某个地方添加显式参考即可节省很多精力。
//Use a static constructor somewhere appropriate.
static someClass(){
new AssemblyYouCareAbout.Object();
}
替代方法是手动将dll拖到正在运行的进程的bin或将dll添加到gac。 我宁愿使用不太优雅的静态构造函数继续前进。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.