有一个程序应该执行一个非常复杂的功能(请帮助实现它):
有一个dll。它包含一个具有以下结构的文本文件:
{
MainWindow="MainWindow.xaml"
Code="MainWindow.xaml.cs"
Pattern=WPFStandart
}
我可以解析它,但是我需要以某种方式使用该dll中描述的逻辑的窗口,并且该dll必须在项目文件夹中,该dll的名称总是不同(我知道如何识别它),而您无法通过 Visual Studio 添加依赖项,因为名称和内容总是不同(开发人员不同,或者他们的团队不同)。
所有信息最初都存储在 pkginfo.txt 文件中的 dll 中,该文件位于项目的根目录(在组装期间编译为嵌入式资源),希望在没有本地复制的情况下打开窗口(“解压缩 dll” )。
更新 我找到了一种方法
[DllImport("name.dll")]
public static extern void VoidInDll();
但我有用户设置的打开的 DLL 的名称,并且DllImport只接受常量。期待选项...
基本上,这个问题有两个部分:如何使用程序集资源,以及如何动态使用类型。
System.Reflection.Assembly为了解决这些问题,使用和 类System.Activator。下面的简化示例演示了这一点。让我们创建一个类库测试项目,其中包含一个标记为嵌入式资源
ResTestDLL的文本文件和一个类:file.txt让我们创建一个应用程序:
让我们编译它并将其
DLL放在与EXE. 应用程序必须输出文件中的文本file.txt和方法调用的结果。笔记。如果资源不是作为项目元素添加的,而是通过项目属性中的“资源”选项卡添加的,那么一切都会变得更加复杂:您将不得不使用ResourceReader类并从
dictionary.