草庐IT

DLL_EXPORT

全部标签

c# - 如何检查 COM dll 是否已在 C# 中注册

我在VS2008、C#、.NET3.5和VSTO中创建了一个Office加载项。它通过ClickOnce部署。运行时配置表单执行regsvr32以注册项目中包含的“fooapi.dll”,由于ClickOnce限制,该项目无法在安装期间注册。是否有任何首选方法来检查并查看“fooapi.dll”是否在运行时在C#中注册? 最佳答案 试试Type.GetTypeFromCLSID或Type.GetTypeFromProgID快速检查COM接口(interface)是否存在的方法。或者,只需实例化对象并捕获异常,例如catch(COME

c# - dll 的 App.config

我们有一个“引擎”可以动态加载dll(位于特定目录中的任何内容)并通过反射从中调用Workflow类。我们现在有一些需要访问数据库的新工作流,所以我想我应该在dll目录中放置一个配置文件。但出于某种原因,我的工作流看不到配置文件。给定上面的配置文件,下面的代码打印一个空字符串:Console.WriteLine(ConfigurationManager.AppSettings["ConnectString"]);我想我想要的只是指定一个配置文件名,但我在这里遇到了问题。我只是没有得到结果。有人有任何指示吗? 最佳答案 如果您用于读取

c# - 我如何获得由 regsvr32 工具注册的所有非托管 dll 的列表?

我使用regsvr32注册和注销非托管DLL,以便在我的C#应用程序中使用它。但是我在regsvr32工具中没有看到列出所有已注册DLL的任何参数,那么我如何才能获得所有已注册DLL的列表? 最佳答案 要查看所有已注册的DLL,您可以使用以下免费实用程序:RegDllView是一个查看系统上注册的dll/ocx/exe文件的工具,也可以从资源管理器注册dll文件。ListDLLs是另一个报告加载到进程中的DLL的工具。您可以使用它来列出加载到所有进程中的所有DLL、加载到特定进程中的所有DLL,或者列出加载了特定DLL的进程。Lis

c# - 使用没有 FSharp.Core.dll 引用的 F# 的可移植类库

我尝试使用F#创建可移植类库,例如可以从C#代码中使用它。但看起来像使用标准F#构造,例如raise使得FSharp.Core.dll成为使用创建的可移植类库所必需的。raise(ArgumentNullException("parameter"))转化为Operators.Raise(newArgumentNullException("source"));(其中Operators.Raise位于Microsoft.FSharp.Core命名空间中)而不仅仅是thrownewException我认为这不是唯一从FSharp.Core.dll库中编译为某些静态方法的F#构造。有什么方法可

c# - 我可以在 DLL 中嵌入其他文件吗?

我正在通过API为另一个应用程序编写插件。插件以DLL的形式分发。是否可以在DLL文件中嵌入其他文件,如pdf、图像、chm帮助文件等...我希望能够为我的插件提供文档,但我仍然希望保留分发插件的能力-作为单个文件,用户只需拖放到应用程序上即可安装。 最佳答案 当然,您可以在DLL中嵌入资源。然后在运行时你只需做:Streamstream=Assembly.GetExecutingAssembly().GetManifestResourceStream("com.stackoverflow.plugin.example.Foo.pd

c# - 如何给 DLL 中的一行代码打补丁?

我有一个缺少一行代码的.Netdll。我想修补那个DLL,但我没有源代码。我该怎么办?有谁知道快速修补此类内容的方法吗? 最佳答案 随着ReflexilReflector的插件,修改DLL的一小部分又快又容易。我曾在少数情况下使用它来更改部署的dll中的一两行,通常是为了禁用某些由条件导致的行为(不,不是破解应用程序,合法使用我们自己的代码以避免完整部署的重量)。 关于c#-如何给DLL中的一行代码打补丁?,我们在StackOverflow上找到一个类似的问题:

c# - 从另一个 DLL 引用一个 DLL

我有一个C#应用程序,我们称它为App.exe。它引用名为A.dll的DLL,后者又引用另一个DLL,即B.dll。然而,它们被引用的方式有点不同。在A.dll的代码中,直接引用了B.dll(通过Project>References>AddB.dll)。但是,我的App.exe具有在运行时使用Assembly.Load()等加载A.dll的代码。总结一下,App.exe----(runtimeloading)--->A.dll----(directreference)--->B.dll所有三个东西(App.exe、A.dll和B.dll)都位于同一个目录中,比方说ExeDir。现在我要

c# - 在没有类型库的情况下使用 C# 中的 COM dll

我需要使用很久以前用Delphi开发的COM组件(dll)。问题是:dll不包含类型库…….NET中的每个互操作功能(例如TlbImp)似乎都依赖于TLB。该组件已在此处的Delphi程序中使用多年,没有出现任何问题,因为“使用Delphi的COM对象不是什么大问题,因为我们知道接口(interface)”(引用Delphi开发人员的话)。有什么方法可以在没有TLB的情况下从c#使用此DLL?我试过将DLL用作非托管,但它导出的唯一方法是DllUnregisterServer、DllRegisterServer、DllCanUnloadNow和DllGetClassObject。我知道

C# 更新 DLL 而无需重新编译项目

我已经编写了一个小程序,其中引用了一个将包含在安装文件中的dll文件。我仍然需要一种更新dll的方法(以防我更改某些功能),而无需再次重新下载整个程序,只需替换dll文件...这可能吗?我刚刚在某处读到我必须用新的dll版本更新xml文件,但我确实需要完整的步骤才能成功更新dll...非常感谢任何帮助......非常感谢更新我真的不知道该说什么...两种方式都很棒...非常感谢您的帮助...我今晚会测试它们并将答案写在这里...再次感谢:) 最佳答案 如果您已经分发了您的应用程序,则可以通过配置重定向程序集绑定(bind)。Youc

c# - 如何从 *.dll 中检索所有公共(public)方法

我有一个用C#编写的*.dll,我需要获取该*.dll中包含的所有公共(public)方法或类的列表。有什么方法可以用C#以编程方式完成吗? 最佳答案 是使用Assembly.GetTypes提取所有类型,然后对每种类型使用反射来迭代公共(public)方法。Assemblya=Assembly.LoadWithPartialName("...");Type[]types=a.GetTypes();foreach(Typetypeintypes){if(!type.IsPublic){continue;}MemberInfo[]me