我的应用程序有一个 dll,它将由驻留在全局程序集缓存中的 .NET 框架程序集调用。这在本地机器上完美运行。
我在 Azure Web 应用程序中遇到问题。在 Azure Web 应用程序中,我无法将程序集添加到 GAC。因此,每当 GAC dll(System.dll、System.Xml.dll、..etc)尝试加载我的程序集时,它都会因抛出文件未找到异常而失败。但在同一过程中,我的程序集被加载到不同的应用程序域/LM/2/... 而不是 AppDomain“EE 共享程序集存储库”中。
var appDomain = AppDomain.CreateDomain("New AppDomain", null, new AppDomainSetup
{
CachePath = AppDomain.CurrentDomain.SetupInformation.CachePath,
ShadowCopyFiles = "true",
LoaderOptimization = LoaderOptimization.SingleDomain //tried MultiDomain too
});
通过上面的一些代码,我尝试创建一个具有不同配置和加载器优化集的AppDomain并将程序集加载到其中,以便System.dll可以找到并加载我的程序集。但这也行不通。
如何将我的程序集(位于 %home%\wwwroot\bin 中)加载到 GAC 中的 dll 中?
最佳答案
我相信您需要在 AppDomainSetup
对象上设置 ApplicationBase
和 PrivateBinPath
,以便它知道从哪里加载程序集。
关于c# - 制作 GAC 程序集来加载自定义程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52496758/