gpt4 book ai didi

c# - 从路径加载程序集

转载 作者:太空狗 更新时间:2023-10-29 22:09:14 25 4
gpt4 key购买 nike

我需要从某个位置而不是从 GAC 加载程序集。我无法从 GAC 中删除程序集,因为我的程序必须在不同的机器上运行,我无法控制程序集是否在 GAC 中。

我在我的项目中添加了对 DLL 文件的引用。不幸的是,程序集是从 GAC 加载的。

我在 Startup-Event

App.xaml.cs 中尝试了以下代码
var directory = Thread.GetDomain().BaseDirectory;
var dllPath = Path.Combine(directory, "MyAssembly.dll");
var assembly = Assembly.LoadFrom(dllPath);

不幸的是程序集仍然从 GAC 加载。

即使程序集在 GAC 中,我也可以从给定位置加载它?

最佳答案

不幸的是,您将无法绕过 GAC - Assembly.LoadFrom()Assembly.LoadFile(),甚至无法将其加载到字节数组中并使用 Assembly.Load(byte[]) 将首先检查 GAC 是否有具有相同标识的程序集,然后加载它。

曾经能够在 .net 1.1 中做您想做的事,但从 2.0 开始,首先检查 GAC。 See How the Runtime Locates Assemblies - 请注意,第 3 步是在探测目录之前检查 GAC(即使您已完全指定它)

如果你想为反射加载一个(检查程序集,而不是运行它),你可以使用 Assembly.ReflectionOnlyLoadFrom()

关于c# - 从路径加载程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23871725/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com