我想动态加载一个或多个DLL,以便它们使用与我的主应用程序不同的安全性或基本路径运行.如何将这些DLL加载到单独的AppDomain中并从中实例化对象?
如果我有枚举类型:
public enum Sport
{
    Tennis = 0;
    Football = 1;
    Squash = 2;
    Volleyball = 3;
}
我可以在运行时以某种方式添加:
PingPong = 4
我想提供一些在我的软件中创建动态可加载插件的方法.执行此操作的典型方法是使用LoadLibrary WinAPI函数加载DLL并调用GetProcAddress以获取指向该dll内的函数的指针.
我的问题是如何在C#/ .Net应用程序中动态加载插件?
我有一个集会.在这个程序集中,我有一个类和接口.我需要在运行时加载这个程序集,并希望创建该类的对象,并且还想使用该接口.
Assembly MyDALL = Assembly.Load("DALL"); // DALL is name of my dll
Type MyLoadClass = MyDALL.GetType("DALL.LoadClass"); // LoadClass is my class
object obj = Activator.CreateInstance(MyLoadClass);
这是我的代码.怎么可以改进?
如何正确引用我没有物理访问权限的C#DLL?(我实际上有DLL,只是不是它的所有依赖.)
背景:
在目标计算机上,安装了一个程序和许多相互依赖的DLL文件C:\FancyProgram.
我需要编写一个将部署在目标计算机上的简单应用程序C:\SimpleProgram.  
这个简单的程序需要调用其中一个dll文件C:\FancyProgram.它是一个.net托管DLL
在我的开发机器上,我没有副本FancyProgram.我确实有一个DLL文件,但我没有任何依赖.我也无法捆绑该DLL SimpleProgram.
在我的Visual Studio项目中使用和引用此DLL的正确方法是什么,以便我SimpleProgram将正确编译但在运行时从正确的位置加载DLL?
谢谢
这类似于我找到的其他一些线程,但我还没有找到我需要的答案。我希望得到一个直接的回答,即使是“不,你不能那样做”。
有没有一种方法可以在类/类型存在时使用一个代码块,如果不存在则使用另一个代码块。结果将与使用预处理器指令相同,但无需 #define 和手动注释或取消注释文件中的某些内容。
这可能是一个特殊的用例。我不知道。我在一个环境中工作,在编译任何东西之前,可以安装或不安装文件集。所以有人可以购买一个“安装”的插件(添加到项目中的文件),这使得类/类型可供使用(如扩展 API)。如果有人没有我们的其他插件包之一,我需要提供一种解决方法。我希望这是有道理的。
除非我们必须这样做,否则要求某人打开我们的一个文件(如果他们有另一个插件)取消对预处理器指令的注释对用户来说是不友好的。
例如,我知道这不起作用,因为它只在使用 #define 时测试布尔值,但它说明了我正在尝试做什么......
#if SomeType
    SomeType.DoSomething();
#else
    DefaultWay.DoSomething();
编辑:我将此添加为 C# 功能建议。请在这里投票:http : //visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2297494-add-type-testing-as-preprocessor-directive
我不知道反射是如何做到这一点的,但我是 C# 的新手,所以如果可能的话,使用重选的例子会很棒。
可能重复:将
DLL加载到单独的AppDomain中
将.NET程序集加载到单独的AppDomain中的正确方法是什么,这样您就可以访问其类型/类,但仍然可以卸载它(并重新加载它).
这是前面讨论的切线: C# - 正确加载程序集,查找类和调用Run()方法
我正在用C#编写一个Addin框架,我想知道如何在不需要重新启动应用程序的情况下使Addin无法加载.
我听说过AppDomains但这些有用吗?Addin可以添加可扩展性类,并且可以通过接口在主AppDomain中调用,并且仍然可以卸载并调用清理代码,导致这些类被删除而该程序集不在主AppDomain中吗?
或者是否有其他方法可以实现无法加载的插件,但是除了AppDomain之外的IIRC,你无法卸载组件.
如果可能的话,我还希望插件引擎与Mono兼容,所以如果可以的话,任何答案都会尝试与Mono保持兼容.
我正在尝试在 MonoTouch 中使用如下 Objective-C 代码:
if (NSClassFromString(@"ADBannerView"))
C# 中的等价物是什么?
基本上我想使用 iAd,但我需要检查 和 是否存在ADBannerView,ADInterstitialAd因为它们并非在所有版本的操作系统上都可用。(而且我宁愿进行功能检查而不是 iOS 版本检查)
我认为这在其他情况下也可能有帮助。
我有一个 xml 文件,需要将其转换为 txt,为此我使用了 xslt 转换。我的 xslt 转换文件包含一些支持 javascript 函数
如果我在 .net Framework 4.5 及更高版本中运行代码,我可以成功转换文件,但相同的代码在 .net core 2.1 中会失败。
.netcore 2.1 的文档显示了对 xslt 转换的支持,但它对我不起作用,这是我所缺少的。
我的输入 XML:
   <?xml version="1.0" encoding="utf-8"?>
<Maps xmlns:xsi= "https://www.w3.org/TR/xmlschema-1/" xmlns:xsd= "http://www.w3.org/2001/XMLSchema" xmlns= "http://www.semi.org">
<Map SubstrateId= "EMAXA191X0121" SubstrateType= "">
<Device MachineID= "M/C Name : AOI-404" BinType= "Decimal" NullBin= "099" Orientation= "0" OriginLocation= "2" Columns= "59" Rows= "41" CreateDate= "20190111.214309" ProductId= "EMAXA191X0121" LotId= "" WaferSize= "200">
<ReferenceDevice ReferenceDeviceX= "-1" ReferenceDeviceY= "-1" />
<Bin>
<Bin BinCode= "001" BinCount= "1565" BinQuality= …