gpt4 book ai didi

c# - ASP.NET 从 bin 文件夹加载非托管 dll

转载 作者:行者123 更新时间:2023-12-02 17:24:47 26 4
gpt4 key购买 nike

问题:我在 ASP.NET 中使用嵌入式 Firebird 数据库。

现在,Firebird 有一个围绕 native dll 的 .NET 包装器。

问题是,在 ASP.NET 编译和执行过程中,DLL 会被影子复制到临时文件夹中。不幸的是,只有 .NET dll,而不是 native dll。

参见http://msdn.microsoft.com/en-us/library/ms366723.aspx了解详情。

现在,这使得有必要将非托管 dll 放入 system32 目录(或路径环境变量中的任何其他目录)中。

现在,我想更改包装器/ native dll(开源),因此它也会加载仅位于 bin 文件夹中的 dll。

现在,我的问题是,在 .NET 中,如何从绝对路径加载非托管 dll?
绝对路径是在运行时确定的,而不是在编译时确定的...

最佳答案

将 native dll 嵌入到程序集中。

Application_Start() 上,检查 Environment.CurrentDirectoryAssembly.GetExecutingAssembly().Location 或任何实际指向您想要的位置的内容对于该文件,如果不存在,则通过 Assembly.GetManifestResourceStream() 将其流式传输。

请注意,这可能会导致应用程序域回收,例如重新启动您的应用程序,但由于您刚刚启动它,所以这不是问题。

不知道为什么你想要一个绝对路径,特别是对于非托管 dll。如果您只需将非托管 dll 定位在与调用它的程序集相同的目录中,您将获得更好的效果,减少痛苦。

关于c# - ASP.NET 从 bin 文件夹加载非托管 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2907169/

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