c# - 如何绕过 .NET DLL 服务引用要求

标签 c# .net vb.net web-services dll

我在 .NET 中有一个 DLL,它使用 WebService(用于发送电子邮件)。

当我在项目中使用 DLL 时,除非再次引用 Web 服务,否则会出现错误。

我不想被迫在使用 DLL 的父项目中引用它

要调用 DLL,我只需执行以下操作:

Try
    Dim x As New clsMail
    Dim y As New clsMail.objMail
    x.SendEmail(y)
Catch ex As Exception
    e = ex.ToString
End Try

这可能吗,因为它已经在 DLL 中被引用了?

Files

如果我删除主项目中的引用,我会从 Common DLL 中收到错误。如果我将服务引用添加到主项目中,则错误就会消失。

Error

我希望能够通过导入 DLL 来使用此 DLL 和服务,而无需执行任何额外的工作。重点是能够将此 DLL 导入到许多项目中,而无需在这些项目中执行任何额外的步骤。

提前致谢

最终更新:

添加MailServer = New Mailserver.Service1SoapClient(New BasicHttpBinding(), New EndpointAddress("http://webmail/SendEmail.asmx ") 在 DLL 本身中修复了此问题。我现在可以在任何项目中使用,而无需引用 DLL 外部的 Web 服务

C# 版本:

 MailServer.Service1SoapClient MailServer = new MailServer.Service1SoapClient(new BasicHttpBinding(), new EndpointAddress("http://webmail/SendEmail.asmx"));

谢谢

最佳答案

您可能不需要添加整个服务引用。添加引用的唯一有益之处是在 App.config 中为您的程序添加设置,您不需要它生成的任何文件或类。您所需要做的就是复制 WizardCommunications 中自动生成的 app.config 中的配置设置,并将其复制到屏幕截图中的 App.config 中。然后它将从 exe 的配置文件中读取设置并且应该可以工作。

您还可以手动将 app.config 中的设置(例如它连接到的 URL)硬编码到您的库中(通过使用允许您传入 URL 的构造函数),这样它就不会依赖于其配置设置。

更新:

对设置进行硬编码,而不是使用 Dim MailServer as New MailServerClient 并使用 Partial Public Class Service1SoapClient 中的构造函数 Public Sub New()您需要改用 Public Sub New(ByVal binding As System.ServiceModel.Channels.Binding, ByVal remoteAddress As System.ServiceModel.EndpointAddress) 构造函数。

为此,您需要重新创建 dll 中 app.config 文件中定义的设置,并将其作为两个参数传递。这是一个基本示例,您需要对其进行调整以满足您的需求

Dim MailServer As New MailServer.Service1Client(New BasicHttpBinding(), New EndpointAddress("http://webmail/SendEmail.asmx"))

一旦你这样做了,你就可以只引用项目的 dll,而不需要运行的 exe 的 app.config 中的任何内容。

关于c# - 如何绕过 .NET DLL 服务引用要求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45989265/

相关文章:

c# - 在非静态类中,如何保留在多个不同类中同时调用的静态方法中使用的静态变量的值

.net - System.ComponentModel.DesignerCategory ("Code") 仍然打开设计器

c# - 以编程方式获取友好的端口名称

c# - 如何使 DirectX 控件在 C# 窗体上部分透明

c# - 无法将 UI 控件的值作为参数传递给 Task.Factory.StartNew 内的方法

c# - 将 HH.mm 格式的字符串解析为 TimeSpan

vb.net - 遇到奇怪的错误: "& ErrorName

c# - 从另一个 Azure Function 启动 Azure Function 的最佳实践

c# - 在 c#.net winforms 中保存变量的值

c# - 如果从同一个线程调用 Dispatcher.BeginInvoke 是否会将调用排队?