有没有什么办法可以告诉Visual Studio为我构建一个.dll,它只会在加载另一个引用(托管)库时存在,但仍然将其作为参考?是否有可选的库引用? (对于可修改的Mod)
基本上我想能够从外部库内部的类继承,只有当外部类存在时我才会初始化它。
更详细的解释:
- 我做了一个改装API游戏(通过Assembly.LoadFrom)
- 我想MODS的是moddable。可以说,我有2个Mods Mod A和Mod B. Mod A提供了添加额外功能的静态注册表。所以在Mod B中,我正在检查是否加载了Mod A,如果是,则使用Mod As静态注册表来注册我的addtions。
- 问题是,为了这样做没有编译错误,我必须在Mod B的Visual Studio项目中添加Mod A作为参考 - 这导致如果Mod A不存在,Mod B将无法加载。但它应该是一个可选的参考:/
类似“懒库引用”将是完美的 - 其中一个lib引用只在实际需要时加载。
是的,我想避免使用反射/动态类型。谢谢我将读入MEF – Tyron
就像上面提到的''TypeBuilder''是关于反射的,所以选项不在表格中。我会研究改变你当前的方法,以便使用可以在这些外部依赖中实现的“接口”。 – Jammer
感谢您的额外信息 - 我不认为懒惰将工作,因为它似乎CLR会尝试加载引用的库,甚至没有创建一个有问题的类的实例(也不访问任何静态变量)。看起来,只要有任何类使用引用的库,它就会尝试加载引用的库,即使完全不使用类。 –
Tyron