草庐IT

托管所

全部标签

c# - 从非托管进程卸载 .NET DLL

我正在使用我可以在托管DLL中用C#实现的最佳代码来扩展我的Inno-Setup脚本。我已经知道如何将托管DLL中的方法导出为非托管进程中使用的函数。它可以通过IL编织来完成,并且有一些工具可以自动执行此操作:NetDllExport(我写的)UnmanagedExports所以在导出之后,我可以在Inno-Setup安装程序中从Pascal脚本调用我的函数。但随之而来的一个问题是:DLL似乎无法再卸载了。使用Inno-Setup的UnloadDLL(...)没有任何效果,文件保持锁定状态直到安装程序退出。因此,安装程序等待2秒,然后无法从临时目录(或安装目录)中删除我的DLL文件。事

c# - 从非托管进程卸载 .NET DLL

我正在使用我可以在托管DLL中用C#实现的最佳代码来扩展我的Inno-Setup脚本。我已经知道如何将托管DLL中的方法导出为非托管进程中使用的函数。它可以通过IL编织来完成,并且有一些工具可以自动执行此操作:NetDllExport(我写的)UnmanagedExports所以在导出之后,我可以在Inno-Setup安装程序中从Pascal脚本调用我的函数。但随之而来的一个问题是:DLL似乎无法再卸载了。使用Inno-Setup的UnloadDLL(...)没有任何效果,文件保持锁定状态直到安装程序退出。因此,安装程序等待2秒,然后无法从临时目录(或安装目录)中删除我的DLL文件。事

c# - 如何枚举 C# 中的所有托管线程?

是否可以在C#中枚举所有托管线程?当您在调试时遇到断点时,VisualStudio似乎能够执行此操作。在“线程”窗口中,它显示了所有正在运行的线程的列表,包括托管名称。有谁知道它是如何做到的? 最佳答案 调试器通常能够做“普通”代码做不到的事情。如果使用分析/调试API,您可能会发现可以执行此操作,但我认为您无法通过“普通”.NET代码执行此操作。 关于c#-如何枚举C#中的所有托管线程?,我们在StackOverflow上找到一个类似的问题: https:/

c# - 如何枚举 C# 中的所有托管线程?

是否可以在C#中枚举所有托管线程?当您在调试时遇到断点时,VisualStudio似乎能够执行此操作。在“线程”窗口中,它显示了所有正在运行的线程的列表,包括托管名称。有谁知道它是如何做到的? 最佳答案 调试器通常能够做“普通”代码做不到的事情。如果使用分析/调试API,您可能会发现可以执行此操作,但我认为您无法通过“普通”.NET代码执行此操作。 关于c#-如何枚举C#中的所有托管线程?,我们在StackOverflow上找到一个类似的问题: https:/

c# - 转换 Web API 以使用自托管

我正在尝试将现有的ASP.NETWebAPI项目(目前托管在IIS中)转换为可以使用SelfHost框架的项目。我对实际细节有点模糊,但我知道我可以在控制台窗口中运行自托管服务器,然后在其上运行服务。我遇到的问题是我的项目是MVC项目而不是控制台项目。我对控制台/Windows应用程序的熟悉程度有限,因为我通常处理要在IIS中托管的项目。我有点困惑的是,我是否需要将我在VisualStudio中的现有WebAPI项目转换为新的控制台应用程序,或者是否有办法在解决方案中创建另一个控制台应用程序项目,它可以充当WebAPI服务的Web服务器,或者更确切地说,如果有一种方法可以将带有Main

c# - 转换 Web API 以使用自托管

我正在尝试将现有的ASP.NETWebAPI项目(目前托管在IIS中)转换为可以使用SelfHost框架的项目。我对实际细节有点模糊,但我知道我可以在控制台窗口中运行自托管服务器,然后在其上运行服务。我遇到的问题是我的项目是MVC项目而不是控制台项目。我对控制台/Windows应用程序的熟悉程度有限,因为我通常处理要在IIS中托管的项目。我有点困惑的是,我是否需要将我在VisualStudio中的现有WebAPI项目转换为新的控制台应用程序,或者是否有办法在解决方案中创建另一个控制台应用程序项目,它可以充当WebAPI服务的Web服务器,或者更确切地说,如果有一种方法可以将带有Main

c# - 如何判断一个DLL是托管程序集还是原生(防止加载原生dll)?

原标题:如何防止从.NET应用程序加载nativedll?背景:我的C#应用程序包括一个插件框架和通用插件加载器。插件加载器枚举应用程序目录以识别插件dll(此时它基本上搜索*.dll)。在同一应用程序目录中有一个native(Windows、非.net)dll,其中一个插件dll间接依赖于它。插件加载器盲目地假定native.dll是一个.NETAssemblydll,仅仅是因为它只检查文件扩展名。当它尝试加载nativedll时,抛出异常:“无法加载文件或程序集‘native.dll’或其依赖项之一。该模块应包含程序集list。”如果插件加载失败,我基本上会创建一个诊断报告,所以我

c# - 如何判断一个DLL是托管程序集还是原生(防止加载原生dll)?

原标题:如何防止从.NET应用程序加载nativedll?背景:我的C#应用程序包括一个插件框架和通用插件加载器。插件加载器枚举应用程序目录以识别插件dll(此时它基本上搜索*.dll)。在同一应用程序目录中有一个native(Windows、非.net)dll,其中一个插件dll间接依赖于它。插件加载器盲目地假定native.dll是一个.NETAssemblydll,仅仅是因为它只检查文件扩展名。当它尝试加载nativedll时,抛出异常:“无法加载文件或程序集‘native.dll’或其依赖项之一。该模块应包含程序集list。”如果插件加载失败,我基本上会创建一个诊断报告,所以我

c# - 我如何在托管 C++ 中执行 typeof(int)?

我现在正在做一个项目,其中一部分使用托管C++。在托管C++代码中,我正在创建一个数据表。在为数据表定义列时,我需要指定列的类型。在C#中,这将:类型(整数)但我如何在托管C++中做到这一点?谢谢! 最佳答案 在C++/CLI中,usethetypeidkeyword.例如Type^t=Int32::typeid;在较旧的“托管C++扩展”语法中,您将使用__typeof(Int32),但该语言的整个版本已被严重弃用,您应该使用C++/CLI。 关于c#-我如何在托管C++中执行type

c# - 我如何在托管 C++ 中执行 typeof(int)?

我现在正在做一个项目,其中一部分使用托管C++。在托管C++代码中,我正在创建一个数据表。在为数据表定义列时,我需要指定列的类型。在C#中,这将:类型(整数)但我如何在托管C++中做到这一点?谢谢! 最佳答案 在C++/CLI中,usethetypeidkeyword.例如Type^t=Int32::typeid;在较旧的“托管C++扩展”语法中,您将使用__typeof(Int32),但该语言的整个版本已被严重弃用,您应该使用C++/CLI。 关于c#-我如何在托管C++中执行type