草庐IT

AssemblyResolve

全部标签

c# - 启动 CLR 后如何设置程序集查找路径?

有没有一种方法(API函数)可以在启动CLR主机后设置C#程序集查找路径,这样,ExecuteInDefaultAppDomain()函数找到了吗?提前致谢。 最佳答案 你可以这样做。基本上,每次找不到程序集的路径时,都会调用AssemblyResolve事件。然后您就有机会手动加载该程序集。AppDomain.CurrentDomain.AssemblyResolve+=newResolveEventHandler(CurrentDomain_AssemblyResolve);privateSystem.Reflection.As

c# - 如何在 AssemblyResolve 事件之前在运行时加载程序集?

实际上,我试图在我的解决方案中实现某种“静态链接”程序集。所以我尝试了以下方法:使用CopyLocal=false添加对我的程序集的引用使用“添加为链接”将.dll文件本身添加到我的解决方案使用“添加资源”-“添加现有文件”将.dll文件本身添加到我的资源将我的程序集中的一些类型添加到Form1中作为privateMyObjecttemp=newMyObject();完成这些步骤后,我得到了预期的FileNotFoundException。因此,让我们尝试使用这个快速技巧在AssemblyResolveEvent中加载程序集AppDomain.CurrentDomain.Assembl

c# - 为什么我需要一个已加载程序集的 AssemblyResolve 处理程序?

我有两个程序集:App和AddOn。App引用AddOn,但CopyLocal设置为false,因为AddOn将由App动态加载。这是AddOn中的代码:namespaceAddOn{publicclassAddOnClass{publicstaticvoidDoAddOnStuff(){Console.WriteLine("AddOnisdoingstuff.");}}}这是App中的代码:classProgram{staticvoidMain(string[]args){Assembly.LoadFrom(@"..\..\..\AddOn\bin\Debug\AddOn.dll")

c# - 使用 AppDomain.AssemblyResolve 事件

我正在尝试使用AppDomain.AssemblyResolve事件来处理异常,同时解析运行时加载的某些dll的程序集(SerializationExceptionfordynamicallyloadedType)。当事件被触发时,我加载目录中的所有DLL并创建一个Assembly数组,然后我使用此方法获取包含我指定类型的Assembly:publicstaticAssemblyGetAssemblyContainingType(StringcompleteTypeName,Assembly[]assemblies){Assemblyassembly=null;foreach(Asse

c# - Azure Function,EF Core,无法加载 ComponentModel.Annotations 4.2.0.0

我已经创建了几个.NetStandard2.0库,通过控制台应用程序测试了执行情况,还有一些测试-一切都很好。转到azure函数,并得到以下运行时错误:然后我尝试将该特定版本下载到API函数项目中:我使用的是VisualStudio版本15.7.0预览版5.0。我已将AzureFunctions更新到4.7...因为控制台和测试项目是-并且这些工作正常。在这方面待了太多小时..所以我希望这个决议不是什么疯狂的事情。EfCore2.1.0-rc1-final也在其中。对Required、MaxLength、NotMapped使用数据注释。图形错误说:Microsoft.EntityFra

c# - AssemblyResolve 未针对依赖项触发

我现在正在为AssenblyResolve事件苦苦挣扎一段时间。我搜索了stackoverflow并进行了其他谷歌搜索,并尝试了所有我认为相关的内容。以下是更接近我的问题的链接(在我看来):AssemblyResolveisnotinvokedandFileNotFoundExceptionisthrownduringserializationWheretohandleAssemblyResolveeventinaclasslibrary?我有一个带有静态方法的Bootstrapper类(为了清楚起见,我将删除我们拥有的线程安全代码:publicstaticvoidInitialize

c# - 在不同的 AppDomain 中加载/卸载程序集

我需要在运行时加载的程序集中执行一个方法。现在我想在方法调用后卸载那些加载的程序集。我知道我需要一个新的AppDomain以便卸载库。但是这里,问题出现了。要加载的程序集是我的插件框架中的插件。他们根本没有入口点。我所知道的是它们包含一些实现给定接口(interface)的类型。旧的非AppDomain代码如下所示(略有缩短):try{stringpath=Path.GetFullPath("C:\library.dll");AppDomain.CurrentDomain.AssemblyResolve+=CurrentDomain_AssemblyResolve;Assemblyas

c# - 在不同的 AppDomain 中加载/卸载程序集

我需要在运行时加载的程序集中执行一个方法。现在我想在方法调用后卸载那些加载的程序集。我知道我需要一个新的AppDomain以便卸载库。但是这里,问题出现了。要加载的程序集是我的插件框架中的插件。他们根本没有入口点。我所知道的是它们包含一些实现给定接口(interface)的类型。旧的非AppDomain代码如下所示(略有缩短):try{stringpath=Path.GetFullPath("C:\library.dll");AppDomain.CurrentDomain.AssemblyResolve+=CurrentDomain_AssemblyResolve;Assemblyas

c# - 调用 Assembly.Load(byte[]) 可以引发 AppDomain.AssemblyResolve 事件吗?

假设我有一个AppDomain.AssemblyResolve的处理程序事件,并在处理程序中构造一个字节数组并调用方法Assembly.Load(byte[]).此方法本身是否会导致再次引发AssemblyResolve事件,并导致重新输入我的处理程序?我的问题不仅限于可以使用C#编译器生成的程序集,它们还可以包含CLR支持的任意元数据和可执行代码。我做了一些实验,但没有发现任何情况。我尝试加载需要额外引用的程序集,尝试将CAS属性添加到加载的程序集(其解码需要另一个程序集),尝试加载带有模块初始值设定项的程序集(全局.cctor方法)。在任何情况下,我都没有观察到AssemblyRe

c# - AppDomain.CurrentDomain.AssemblyResolve 请求 <AppName>.resources 程序集?

使用代码HowtoembedasatelliteassemblyintotheEXEfile由csharptest.net提供,我创建了一个自定义程序集解析器并将我的程序集嵌入到我的资源中。我可以成功解析我在中使用的程序集,但AppDomain.CurrentDomain.AssemblyResolve要求一个名为“AppName.resources”的程序集,特别是“MyProgram.resources,Version=0.15.3992.31638,Culture=en-US,PublicKeyToken=null”我不知道如何解决?我已经尝试禁用从资源加载我的自定义程序集(将我
12