我试图找出如何在C#应用程序中运行时导入和使用.dll.使用Assembly.LoadFile()我设法让我的程序加载dll(这部分肯定是有效的,因为我能够获得带有ToString()的类的名称),但是我无法使用'输出'我的控制台应用程序内的方法.我正在编译.dll然后将其移动到我的控制台项目中.CreateInstance之间是否有额外的步骤,然后能够使用这些方法?
这是我的DLL中的类:
namespace DLL
{
using System;
public class Class1
{
public void Output(string s)
{
Console.WriteLine(s);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是我想要加载DLL的应用程序
namespace ConsoleApplication1
{
using System;
using System.Reflection;
class Program
{
static void Main(string[] args)
{
var DLL = Assembly.LoadFile(@"C:\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\DLL.dll");
foreach(Type type in DLL.GetExportedTypes())
{
var c = Activator.CreateInstance(type);
c.Output(@"Hello");
}
Console.ReadLine();
}
}
}
Run Code Online (Sandbox Code Playgroud) 何时会显示以下消息?
错误1未知的构建错误,'无法解析对程序集的依赖关系'Infragistics2.Win.v10.3,Version = 10.3.20103.2015,Culture = neutral,PublicKeyToken = 7dd5c3163f2cd0cb'因为尚未预加载.使用ReflectionOnly API时,必须通过ReflectionOnlyAssemblyResolve事件按需预加载或加载相关的程序集.
我在现有的工作项目中添加了几个DLL.我知道在没有代码库细节的情况下很难确定原因,但是我想知道出现这种错误消息的一般原因是什么?
注意: 刚刚创建了一个新的WPF项目并添加了一堆新的DLL.那里也存在问题.因此,问题很可能是由于DLL的组织和内容.