Tag: dll

Inno Setup循环浏览文件并注册每个.NET dll

我正在使用Inno Setup创建一个安装文件,我需要使用regasm.exe文件注册未知数量的.net dll。 我知道我可以使用以下代码注册.net DLL。 [Run] Filename: “{dotnet20}\RegAsm.exe”; Parameters: /codebase MyDLL.dll; WorkingDir: {app}; StatusMsg: “Registering Controls.”; Flags: runminimized 我的问题是,文件夹中有多个dll,我不知道要注册的每个dll的名称。 有没有办法我可以遍历文件夹中的文件并注册其中的每个文件而不知道文件的数量和名称? 请帮忙,谢谢

枚举所有已安装的程序集版本(在GAC中)

是否可以使用C#枚举GAC中所有已安装的程序集版本? 例如,我有一个名为“My.Assembly”的程序集。 程序集可能有各种版本(“1.0.0.0”,“2.3.4.5”,“0.1.2.4”,…),可以针对各种平台(x86,x64,任何CPU)进行编译。 现在我需要一种方法来确定安装了哪个版本/平台。 我知道我可以枚举GAC中的目录,但这似乎是错误的。 应该有更好的方法来做到这一点。 背景我有一个启动器应用程序,用户在其中选择一个DLL。 启动程序从DLL中检索一些信息(不加载它),然后必须启动正确的托管C#应用程序来处理DLL。 DLL可以针对Win32或x64编译,暴露始终是相同的(平台无关的)接口。 我使用LoadLibrary函数在C#应用程序中加载DLL。 唯一的问题是该过程必须是匹配格式(x86或x64)。 可以而且应该为x86,x64和任何CPU编译C#应用程序。

使用具有相同名称空间的两个.NET库

我目前正在为公司维护一些旧代码。 正如它会发生的那样,我正在修改的当前应用程序使用旧版本的内部库(我们称之为Lib1.dll)。 他们还有一个名为Lib2.dll的新版本库,它以多种方式改进了以前的库。 不幸的是,Lib2并不向后兼容Lib1。 更糟糕的是,它们都使用相同的命名空间Product.Common。 如何在同一个项目中使用Lib2和Lib1? 现在,如果我添加对它们的引用,VS告诉我某些类是不明确的(这是有道理的,因为它们使用相同的命名空间)。 基本上,我需要这样的东西: Imports Lib1:Product.Common.Class 我正在使用VB.NET 1.1。

XXX.exe中发生了未处理的“System.ExecutionEngineException”类型的exceptionexception

我有一个用C ++编写的DLL文件。 我尝试在我的c#代码中使用C ++ DLL。 正确调用C ++方法,但在完成进程后会出错。 例外细节: completed.System.ExecutionEngineException未处理Message =抛出了类型’System.ExecutionEngineException’的exception。

如何从浏览器调用WCF服务OperationContract?

我创建了一个WCF 4 Web服务并将其托管在我的IIS 7 ,我提供了以下Service URL:在WCF项目的发布Web部分: http://localhost:8084/service1.svc 。 然后我将我发布的web site绑定在端口: 4567并在IIS键入: http 。 To checked it i clicked on `web site` at `IIS` and click on the browse. It open a following page at my browser: 这意味着Web服务已成功托管在IIS 。 现在我想调用我的实例方法并在浏览器中返回输出。 让我粘贴Iservice.cs和service.svc.cs的示例代码 #Iservice.cs: namespace some.decryption { [ServiceContract] public interface Iservice { [OperationContract, WebInvoke(Method = “GET”, UriTemplate = […]

c#程序中的System.IO.Compression.FileSystem.dll

我想在我的项目中使用dll System.IO.Compression.FileSystem.dll .net框架版本是4.5,操作系统是64.问题是找不到dll。 解决办法是什么?

Visual Studio C# – 找不到SQLite.Interop.dll

我目前正在尝试使用Visual Studio创建一个使用SQLite的C#应用​​程序。 我使用NuGet为我的程序安装了SQLite,并且在解决方案资源管理器(System.Data.SQLite,System.Data.SQLite.EF6,System.Data.SQLite.Linq)中出现了三个引用。 当我在VS中执行我的应用程序时,一切正常。 但是,每当我发布它(使用ClickOnce)并尝试运行应用程序时,它都会崩溃并出现以下错误: System.DllNotFoundException:无法加载DLL“SQLite.Interop.dll”:找不到指定的模块(HRESULTexception) :0x8007007E) 经过一些研究,我在Debug文件夹中找到了这个dll并将其复制到我的程序的“.exe”版本的文件夹中(在发布并执行“setup.exe”之后)。 这样,应用程序运行良好。 但我对这个解决方案并不满意,因为它看起来很脏。 我不希望将来的用户在安装我的应用程序时必须手动执行此操作! 因此,我的问题是:我该怎么做才能确保这个dll与我的程序一起安装? 注意:我尝试了这篇文章的第一个答案: 无法加载dll sqlite interop dll WPF但我似乎没有为我工作。 谢谢 !

是否可以在运行时切换DLL以便使用不同的版本?

我有一个应用程序,其中包含许多连接到许多不同I / O设备的插件(MEF)。 这些插件中的大多数都有许多托管和非托管dll。 一家制造商最近发布了新固件和新驱动程序。 API保持不变。 我认为我可以将两个dll版本包含在单独的资源文件夹中,并在应用程序启动时将所需的集复制到输出文件夹中。 ( 我想我可以制作插件的第二个副本并找出加载正确的插件的方法,但我认为复制DLL可能更容易 – 特别是考虑到插件代码没有改变 ) 这不起作用。 static MyClass() // static constructor { // required version? if (envvar.Equals(“4”) ) { path = “ver4.1.1”; } else { path = “ver2.5.1”; } // location of drivers path = Path.Combine(“./Prj/QX”, path); string[] files = Directory.GetFiles(path); // Copy the files and overwrite destination […]

ISEXP:警告:-6248:找不到依赖文件libc.dll或其组件的依赖项之一

这个问题有很多变化,但我的问题是libc.dll 。 我并不担心解决依赖问题。 我想要一个解决方法来避免这种警告。 我的Forms Application中有30个项目。 当我使用InstallshieldLE发布设置时,我收到了ISEXP : warning : -6248: Could not find dependent file libc.dll, or one of its dependencies of component Sample.CommonModules.ChangeUnit_.Primary_output 每个主要输出的警告。 由于这个警告,发布需要更长的时间并且耗费我的时间。 有没有办法可以在InstallshieldLE中绕过这个警告? 我只想摆脱那个警告。 我不介意创建一个模拟libc.dll文件并将其置于允许InstallShieldLE假定它具有该文件的位置。

SqlCeConnection中的访问冲突exception处理

申请/代码说明: 我的应用程序基于c#并使用SQL Server CE,并且我在同一代码位置只获得此exception两次。 在此版本之前没有引入此exception的崩溃。 此版本中唯一的变化是将.net框架更改为4.5.2。 我在处理SqlCeConnection时遇到访问冲突exception,并出现以下错误: 尝试读取或写入受保护的内存。 这通常表明其他内存已损坏。 此exception不会被.net的try catch子句拦截 – 它会导致崩溃。 在我的代码中,我使用以下命令运行 try { var connectionString = string.Format(“{0}{1}{2}”, “Data Source=”, _localDB, “;File Mode=Read Write;Max Database Size=4000;Persist Security Info=False;”); using (var sqlCeConnection = new SqlCeConnection(connectionString)) { using (var sqlCeCommand = new SqlCeCommand()) { sqlCeCommand.Connection = sqlCeConnection; sqlCeCommand.CommandText = “SELECT * FROM Application”; sqlCeConnection.Open(); var […]