Q: 最近,我遇到了一些问题,我在许多应用程序中都有一个常见的dll,并且该DLL的任何更改都需要构建它,将其复制和粘贴到这些应用程序的每个bin文件夹中,并添加新的参考我决定将此DLL转换为Web服务,以克服此超载. 我制作一个Web服务应用程序包含一组Web服务(每个类映射). 我在这里遇到一些问题: 在原始DLL中,有 其他类别中存在使用方法 在同一dll上课,当我 试图在 其他Web服务类.如何解决 这个问题. 在原始DLL中有一组 静态课 方法.如何使 我的Web服务应用程序. 任何过载方法都会引起问题 在我的网络服务中. 使用Dictionary 作为我方法中的参数. 注意:原始dll包含与数据库的连接.将其转换为Web服务是最佳解决方案吗?在我的情况下,哪个是Web服务或DLL的速度?我应该倾向于WCF而不是? 预先感谢. 解决方案 在我的应用程序中,我通常在同一解决方案中都有所有相关项
以下是关于 dll 的编程技术问答
如何在.NET DLL中确定它是在Windows GUI应用程序还是Web服务中运行的?我有一个低级类,在两个应用程序之间共享,并且在Web服务中使用时需要禁用消息框. Windows应用程序具有200多个解决方案,我无法重新系数现有代码. Web服务需要重复使用一些功能,我正在寻找快速修复. 解决方案 仅一条一般建议,您的低级类可能不应该使用消息框本身,而应允许中间(靠近接口)类以处理您可能想要消息箱的情况. 如果您这样做,那么您只需与桌面使用不同的更高级别类,并且每个类别都具有适合其上下文的通知设施. 其他解决方案 如果它在Web上下文中运行,则httpcontext.current不会为null. 其他解决方案 您可以使用 用户互动属性报告 错误用于Windows过程或 像IIS一样运行的服务 用户界面.如果此属性是 错误,请勿显示模态对话框或 消息框因为没有 用户的图形用户界面 与. 互动 我知道您无法执行此操作,但是....您也可能想考虑您
嗨,我有一个C DLL,它将与COBOL应用程序进行交互.我们想通过Internet将数据发送到COBOL. 所以我创建了一个C#dll,该C dll称为c dll.当我进行consoleapp时,它正常工作,但是当我尝试从ASP.NET调用相同的DLL时,它给出错误消息 我不明白这个错误 An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 还有其他一些帖子,但这些帖子与我的上下文不匹配 我认为我缺少permissions asp.net 这是我的C#dll中的声明,用于调用C DLL [DllImport(@"C:\CCExpert\haz450cp.dll", EntryPoint = "Methodname", CallingConvention = CallingConvention.Cdecl)]
嗨,我有一个C DLL,它将与COBOL应用程序进行交互.我们想通过Internet将数据发送到COBOL. 所以我创建了一个C#dll,该C dll称为c dll.当我进行consoleapp时,它正常工作,但是当我尝试从ASP.NET调用相同的DLL时,它给出错误消息 我不明白这个错误 An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B) 还有其他一些帖子,但这些帖子与我的上下文不匹配 我认为我缺少permissions asp.net 这是我的C#dll中的声明,用于调用C DLL [DllImport(@"C:\CCExpert\haz450cp.dll", EntryPoint = "Methodname", CallingConvention = CallingConvention.Cdecl)]
我试图从我制作的dll,在我们的CAD软件中运行. 我无法正常工作. 当我尝试建立代理时,我会收到以下错误: 在ServiceModel客户端配置部分中找不到具有" BASICHTTPBINDING_IAXAPTASERVICE'和CONTCONT" AXAPTAPROXY.IAXAPTASERVICE'的端点元素.这可能是因为您的应用程序找不到配置文件,或者是因为在客户端元素中找不到匹配此名称的端点元素. 我已经搜索了abit,我认为问题是由于我的DLL在另一个程序中运行. 有一些关于将端点配置从应用程序复制到服务的文章,但是我没有完全抓住,我应该做什么. 任何人都有一个想法,我如何完成这项工作? app.config,由我的客户创建的是:
我正在使用引用Web服务的DLL(我没有选择这样做),但是我必须将Web服务引用添加到使用DLL来工作的项目中. 示例,我有DLL称为api.dll,该dll称为Webervice.svc的Web服务,我想在一个名为Winform的项目中使用.首先,我必须在api.dll中的WebService.svc中添加"服务参考".然后,我添加了一个参考api.dll到winform,但是除非我还将服务引用添加到Winform中的WebService.svc. . 我该怎么做才能避免最后一步? 解决方案 您的第一步是向自己证明这是可能的,然后改编您的项目. 您可以下载可运行的解决方案 在这里 . 我刚刚经历了步骤,并列举了我的行为以产生您想要的结果. Create a web app project (an thus a solution) named 'ReferencedWebService' Add a web service, just
有一个DLL Web服务(用Delphi制造),该方法具有称为 list 的方法,该方法返回字符串列表(widestring). 是否有任何方法可以调用该服务,而无需编写客户端应用程序以消费它? ex .: http://misitio.com:8080/miwebservice.dll > 解决方案 Chrome App 以下是一个示例请求,该请求发布到免费天气Web服务. 其他解决方案 您的请求可能是: POST /WeatherWS/Weather.asmx/GetCityWeatherByZIP HTTP/1.1 Host: wsf.cdyne.com Cache-Control: no-cache Postman-Token: e5bc46a4-71ac-f357-78a7-c4b4de894afb Content-Type: application/x-www-form-urlencoded ZIP=90210 响应将是:
我正在使用同一文件夹中的DLL部署我们的应用程序. 加上平台文件夹中的qwindows.dll. 真的很棒,也没有任何QT安装的机器. 直到昨天,我将QT更新为5.5.1. 现在,曾经使用QT 5.5.0构建的所有应用程序都停止工作,并显示出众所周知的错误:"无法找到或加载QT平台插件'Windows'. 当我将QT文件夹(C:\ QT)重命名为其他内容时,一切都会再次起作用. 对依赖性沃克的进一步研究表明,应用程序确实会查看我的C:\ qt文件夹以找到平台DLL.但是他们找到了一个较新的/不同的版本并投掷错误. GetProcAddress(0xxxx [ADVAPI32.DLL], "SystemFunction036") called from "MSVCR120.DLL" at address 0xxxx and returned 0x00007FFB269C1050. LoadLibraryW("C:\Qt\5.5\msvc2013_64\plug
与此处的这个问题,我正在尝试创建一个安装程序,该安装程序在目标用户的PC上安装DLL,并将其提供给Visual Studio参考管理器(Project> add References) 我已经发现,要使.net4.0参考管理器可见一个程序集,我需要添加此注册表密钥 Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319\AssemblyFoldersEx\MyAsm Value: 和.net4.5,我需要此键 Key: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.5.50709\AssemblyFoldersEx\MyAsm Value: 但
使用.NET 2.0在VS2010项目中使用.RESX文件时,是否将.RESX文件编译到.dll中的项目中,或者我需要单独部署其他内容? 我正在尝试确保在部署中包含.RESX文件,以用于SSRS(SQL Server Reporting Services)使用的自定义DLL (我遇到了此资源,该资源讨论了将.RESX文件讨论为通用语言运行时二进制二进制.Resources可以嵌入运行时二进制二进制二进制文件或编译到卫星组件中的文件,但是我只想部署我的解决方案,以便它可以利用项目中的.RESX文件,我不会尝试获得性能或模块化: http://msdn.microsoft.com/en-en-us/library/ccec7sz1.aspx ) 解决方案 我发现答案是'no',.RESX文件被编译到.dll中,而不需要分开部署.
我已经开发了一个使用QT + MySQL的应用程序. connection = QSqlDatabase::addDatabase("QMYSQL"); 我已经成功地编译了MySQL驱动程序,我的应用程序工作,一切都很好.现在,我正在尝试部署我的应用程序,并与其分发所有所需的DLL. 到目前为止,我已经包括: platforms/qwindows.dll icudt52.dll icuin52.dll icuuc52.dll libgcc_s_dw2-1.dll libstdc++-6.dll libwinpthread-1.dll Qt5Core.dll Qt5Gui.dll Qt5Sql.dll Qt5Widgets.dll libEGL.dll // not needed but included anyway libmysql.dll // compiled drivers 现在要测试它,我将C:\Qt文件夹重命名为其他东西(即C:\Qthi
我已经在Visual Studio 2019中编写了C ++控制台应用程序,并试图将其部署到另一台Windows笔记本电脑.这两台笔记本电脑均使用64位Windows 10,我的目标笔记本电脑已经安装/最新的.NET Framework,vc_redist.x64.exe和Directx. 在部署方法方面,我遵循此Microsoft演练 Word Word,并增加了确保我新创建的"设置"项目的额外步骤也针对X64平台,因为我的代码需要x64中的某些外部库.所得的"设置" .exe/.msi对按计划在源笔记本电脑上工作 - 安装和运行,无需装饰. 在目标笔记本电脑上安装良好,但是启动程序给出了本文标题中提到的错误.经过几个小时的尝试来弄清楚这一点,我想我知道问题的来源,但是首先,我会分享我尝试的,这基本上是发现的所有建议通过搜索此错误代码: 干净的靴子 sfc扫描 chkdsk c:/f/r 修理/新鲜安装第一段中提到的所有框架 同时运行应用程序安装程序和安装应用
我有一个带有主应用程序的QT5 C ++项目,由我创建的共享库.它编译和执行,我能够部署它.问题是,通过部署,我需要将共享库的编译DLL与主要可执行文件相同的目录.但是,我将对顶级文件夹保持相对清洁,并将必要的文件放在适当的子树中.所以,我的问题是: 为了将dll>的路径更改为myApp,我应该放入myApp是myApp是主应用程序可执行文件的文件夹? 是什么? 解决方案 由于Windows为您的程序搜索了DLL,而不是程序本身,因此您无法告诉您在哪里搜索库. 但是,您可以: 添加DLL到路径的所需文件夹. 制作一个启动脚本,可以设置库的路径,然后启动程序. 静态编译,如果您遵守LPGL或QT商业许可证,请根据您的案件. 作为旁注:QT插件可以执行您想要的操作,但核心依赖性不是QT插件本身. 其他解决方案 延迟加载库(请参阅 1 (呼叫 setDlldirectory ). 注意:请记住,在任何用户代码运行之前,全球群体都是初始化的.如果全局引
我们将视觉C ++ 2003解决方案移至Visual 2005,现在我们在清洁XP机器上遇到了问题. 我们的解决方案具有使用此DLL的DLL项目和一个命令行可执行文件.两个项目都创建和嵌入清单文件. 我们的安装程序还从C:\ Program \ Microsoft Visual Studio 8 \ VC \ REDIST \ redist \ x86 \ Microsoft.vc80.crt \ contermoft dir. 当我们在干净的Windows XP上安装时,我们会看到错误消息"应用程序未能启动...应用程序配置不正确." 将exe放入依赖.exe,说: Error: The Side-by-Side configuration information for "c:\program files\MySoftware\vc8\BENCHMARK.EXE" contains errors. This application has failed to
有什么想法将GAC DLL迫使引用? 这是我的问题,我经常使用第三方DLL,该DLL将自己注册到GAC中,当我在项目中使用它时,它会从GAC中读取它,当我部署时,我总是忘记添加添加DLL由于不在bin/引用文件夹中. 无论如何都强迫Visual Studio添加DLL,而不是来自GAC? 解决方案 右键单击汇编参考,选择属性,然后将" local"复制到true.这将导致将其复制到部署目录 其他解决方案 在GAC'D组装时,如果一个参考级别深处,则复制本地.例如,如果您有一个引用GAC'D组件的项目,并且该项目如果您的Web项目引用,则是,虽然是,GAC'D组装将被复制到第一个项目的bin文件夹,但不会被复制到您的Web项目的bin文件夹中. 那么,解决方案是将Web项目中的参考直接设置为GAC'D汇编,并指定本地复制.即使Web项目在这种情况下未直接使用参考,它将将其复制到Web应用程序的bin文件夹中. 其他解决方案 在您的参考文献中选择DL
首先,我不知道部署太多.我希望我的问题有意义. 我需要在许多台式机上安装/部署C#应用程序.它需要第三方DLL文件:a c ++库(" lpsolve55.dll",对于感兴趣的人,它是一个免费的MIP/LP求解器,请参见LPSOLDE.SOURCEFORGE.NET/5.5/).我以下面的方式在代码中使用它: [DllImport("lpsolve55.dll", SetLastError = true)] public static extern bool add_column(int lp, double[] column); 为了进行测试,我将.dll文件手动复制到project\bin\release,而且工作正常. 我的问题:我将需要一个安装程序来应用程序,该应用程序也将管理.dll也将安装.由于我正在使用 visual c#2008 Express Edition 您会建议什么? 解决方案 只需在Visual Studio中添
我使用的是在2个DLL中定义的第三方API.我将这些DLL包括在我的项目中,并将其引用.到目前为止,一切都很好. 但是,这些DLL至少具有一个因DLL,在运行时找不到.我将丢失的DLL复制到项目中,并设置"副本到输出"标志,但没有成功. 我应该在这里做什么来告诉项目应该在哪里找到依赖的dll? 澄清 我尝试添加对丢失的DLL的引用,但由于未被认为是.NET组件.绝望地,我将其直接添加到输出文件夹中,但没有成功. 最后,我在PC上安装了API,并且一切都起作用.安装设置路径变量,并且在安装文件夹中找到DLL. 但是如何告诉项目在其内部文件夹之一中查看? 解决方案 听起来您需要更好地了解第三方库以及它如何使用自己的依赖项.如果API的安装解决了问题,但是手动复制文件却没有,那么您会缺少一些内容.所需的文件或某些环境变量或注册表条目.在此真正可以帮助您的两件事是依赖工具(这是C ++安装的一部分)和ProcMon,这将告诉您所有在运行时使用的注册表键和文件.
我有一个可以安装在Windows上的驱动程序(XP/Vista/7).它是通过第三方应用程序链接到的本机C ++ DLL访问的,也是Winsock提供商(WSP).它曾经在System32下安装,但是看到建议没有,我将其更改为在ProgramFiles下安装. 现在,问题是人们必须在想在自己的应用程序中使用时,必须将其复制回System32或将其复制到应用程序目录中,因为Windows不会在programFiles下搜索programFiles的安装目录应用程序试图加载dll. 我一直找不到任何Microsoft文档讨论此问题,因此,如果不使用Sytem32,则应在哪里安装共享DLL? 解决方案 由于它是链接到驱动程序的DLL,这可能不是一个问题,但是我会谨慎尝试分享DLL,而是尝试让所有客户端应用程序的开发人员保持自己的版本其应用程序文件夹中的DLL. 我在DLL地狱中玩得很开心,无法再想要任何怪异的错误,因为Appx用破坏Appy等的旧版本覆盖了DLL. .
通常要部署QT项目i: 继续运行它并找到投诉的库丢失,并添加它们,直到没有更多. 使用依赖性步行者让我大部分时间(如果不是全部),然后返回选项1. 或只是创建一个静态链接的版本(有时在屁股中疼痛) 所以我现在想尝试windeployqt,对我而言存在于D:\install\Qt\5.5\mingw492_32\bin\ 中 然后我使用: 运行它 D:\>D:\install\Qt\5.5\mingw492_32\bin\windeployqt.exe d:\software\build-qtGuiTestApp-Desktop_Qt_5_5_0_MinGW_32bit-Debug\debug 这是结果输出: D:\software\build-qtGuiTestApp-Desktop_Qt_5_5_0_MinGW_32bit-Debug\debug\qtGuiTes tApp.exe 32 bit, debug executable Adding Qt
多年来,我的应用程序已从1MB增长到25MB,我希望它能进一步增长到40,50 MB.我不使用DLL,但将所有内容都放在一个大型可执行文件中. 拥有一个大型可执行文件具有一定优势: 在客户中安装我的应用程序的确是:复制和运行. 升级可以轻松地拉开并发送给客户 没有矛盾的DLL的风险(客户没有EXE的X版本,而是DLL的版本Y) 大exe的最大缺点是,链接时间似乎成倍增长. 其他问题是,代码的一部分(假设大约40%)与另一个应用程序共享.同样,优点是: 混合不正确的DLL版本没有风险 每个开发人员都可以对通用代码进行更改,以加快开发的速度. ,但同样,这对汇编时间有严重影响(每个人都在他的PC上再次编译了常见的代码)和链接时间. 问题将DLL用于可执行文件提及混合的可能性DLL在一个可执行文件中,但看起来仍然需要您在应用程序中手动链接所有功能(使用loadLibrary,getProcaddress,...). 您对可执行大小,使用DL