问题标签 [dll]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - 如何确保在 IIS 中使用同一个线程执行代码?
我们在 IIS6 中托管的 Web 服务中使用了第三方 dll。问题是一旦这个 dll 被加载到内存中,如果一个与创建它的线程不同的线程试图执行 dll 中的任何代码,就会抛出异常AccessViolationException 。工作进程是多线程的,每次调用 Web 服务都会从池中获得一个随机线程。我们试图从内存中卸载它并在每次需要时重新加载它,但我猜只有前端是 .Net,其余的是非托管的,因此它实际上从未完全从内存中卸载。我们正在使用 VB 和 .Net 2.0。有什么建议么?
(对罗伯·沃克的回应)
我们考虑过创建一个新线程并使用它来调用 dll,但是我们如何让线程坐下来等待调用呢?如何在没有 .Net 3.0 提供的 Dispatcher 类的情况下将调用委托给线程?创建一个隐藏表单并将其放入消息循环中可能会起作用。然后我们可以调用表单的 Invoke() 方法。但是,如果我们在 IIS 托管的 Web 服务中创建表单,我会看到很多问题。
.net - 搜索位置以加载引用的 DLL 的顺序是什么?
我知道 .NET 框架会在多个位置查找引用的 DLL
- 全局程序集缓存 (GAC)
- 添加到 AppDomain 的任何私有路径
- 执行程序集的当前目录
这些位置的搜索顺序是什么?如果找到匹配项,是否停止对 DLL 的搜索,还是继续搜索所有位置(如果是,如何解决冲突)?
另外,请确认或否认这些地点,并提供我未提及的任何其他地点。
dll - vista中如何将dll添加到gac
当我将 dll 拖放到 vista 上的程序集文件夹时,我收到错误“访问被拒绝:mydll.dll”。如何绕过错误消息并将我的 dll 添加到 gac?
.net - 如果通常在存储库的结构中执行任何操作以反映已部署的单元,该怎么办?
这是对该问题的跟进:
对这个问题的共识是一个合格的“是”:也就是说,文件夹 == 命名空间,一般来说,但不是盲目的(java 需要的方式)。
确实,这就是我设置项目的方式。
但是设置源代码控制让我对当前的文件夹结构犹豫不决。与 .NET Framework 一样,我的项目中的命名空间并不总是一对一地匹配部署的单元。说你有
换句话说,子命名空间可能会或可能不会随父命名空间一起提供。
那么部署在一起的命名空间是否以任何方式分组?
顺便说一句,我不使用 VS 或 NAnt——只是使用老式的构建批次。
visual-c++ - dllexport 和 dllimport 有什么区别?
我只是在寻找对这两者之间区别的简单、简洁的解释。MSDN 在这里没有详细介绍。
c# - 加载同一程序集的不同版本
使用反射,我需要加载同一程序集的 2 个不同版本。我可以在同一进程中加载 2 个不同 AppDomain 中的 2 个版本吗?
我需要从旧版本的应用程序到新版本进行一些数据迁移。请让我知道这是否可行,或者我应该使用 2 个单独的过程。
.net - 是否可以在 .net DLL 中嵌入和使用可移植的可执行文件?
考虑我的问题的最简单方法是考虑一个简单的 unix 命令(尽管这是针对 Windows 的),我需要编程访问来运行它。
我有一个基于命令行的可执行文件来执行某些工作单元。我想使用 .net 进程库调用该可执行文件,就像我可以使用任何其他可执行文件一样。
但是,我突然意识到 dll 有可能变得无用或因对可执行文件或不存在的可执行文件的意外更新而中断。
是否可以像运行外部可执行文件一样从 .net 框架中的 Process 对象运行可执行文件?
security - 从网络加载程序集
这与这个问题有关,答案可能相同,但无论如何我都会问。
我知道我们可以从 .NET 3.5 SP1 从网络启动托管可执行文件,但是从可执行文件内部加载的程序集呢?是否同样适用?
dll - 可以使用哪些工具来查找引用了哪些 DLL?
这是 VB6 DLL 和 COM 对象的一个古老问题,但我仍然每天都面对它。可以使用哪些工具或过程来查看另一个 DLL 引用的 DLL 文件或版本?
我指的是在运行时编译的 DLL,而不是来自 VB6 IDE。
这是DLL地狱。
c# - 在不使用任何类型的情况下加载许多托管 DLL 是不是很糟糕?
背景:在我的公司,我们正在开发一堆使用相同核心 dll 的应用程序。这些 dll 使用 Spring.net 的 IoC 容器来连接(自动连接)。所有应用程序都使用相同的 spring 配置文件,并且该配置文件指向许多不同 dll 中的许多类。但并非所有应用程序都需要每个 dll 的功能。但是由于 IoC 容器的工作方式,所有的 dll 都为 Spring.net 加载以检查类型并检查它们实现的接口等等。
核心问题:我知道最好只加载您真正使用的dll。但是仅仅加载一个托管的dll对内存使用真的很糟糕吗?还是首先您在 dll 中使用类,并且它们正在 JIT 中使用最多的内存?