c# - 包括来自类库的服务引用

标签 c# app-config service-reference

我有一个 C# 类库和一个启动项目(一个控制台应用程序)。类库包括对 Web 服务的服务引用。当我尝试运行该项目时,我得到一个 InvalidOperationException,因为启动项目没有读取类库的 app.config,并且它忽略了服务引用。为了让它工作,我不得不向启动项目添加相同的服务引用。有什么办法可以避免这种情况吗?我可以让启动项目识别类库的服务引用和 app.config 而不必将其复制到启动项目吗?

我已经尝试从类库中添加指向 app.config 的链接,但这不起作用。如果类库需要任何使用它的人将该服务引用添加到启动项目,则它不是很便携。

最佳答案

想想你正在尝试做什么 - 你有两个正在构建的程序集:

Library
ConsoleApp

这两个程序集都有配置文件——我想它们看起来像这样:

Library
    app.config
ConsoleApp
    ConsoleApp.exe.config

当您运行 ConsoleApp 时,它无法从您的 Library 程序集中读取或了解 app.config。它知道或关心的唯一配置文件是 ConsoleApp.exe.config。现在可以让配置文件相互引用,但这不是您尝试执行的操作的正确解决方案。

由于您的 Library 程序集没有入口点,因此它永远不会加载到 AppDomain 中。因为它永远不会被加载到 AppDomain 中,所以它的应用程序配置文件永远不会被使用。

您应该做的是通过项目引用在ConsoleApp 中引用Library。然后将所有相关配置数据从 app.config 移动到 ConsoleApp.exe.config,因为这是您的应用程序将使用的配置文件。

这将允许您拥有在 Web 服务上调用方法所需的两件事

  1. 中的代码可以发送和接收 SOAP 消息。
  2. 运行所需的配置元数据。

关于c# - 包括来自类库的服务引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529550/

相关文章:

c# - 如何使用 XmlDocument 将多个命名空间添加到根元素?

asp.net-mvc - 动态设置 app.config 文件连接字符串

web-services - 版本控制:svcmap、disco、xsd、wsdl、svcinfo 和数据源文件

linux - 无法获取共享库(.so) -在 Jboss 上测试 .war 文件的正确地址 API 时出现 UnsatisfiedLink 错误(Linux 环境)

c# - 如何在 C# 中使用带有 ProtectSection 方法的 RsaProtectedConfigurationProvider 创建可导出的 RSA key

c# - 在代码中更改服务引用 URL

.net - 如何仅使用物理 wsdl 文件生成服务引用

c# - 从 Excel 文件中提取数据并存储在 SQL Server 数据库中

c# - 如何提取 order by 子句以便我可以使用逻辑来设置它?

c# - Service broker 与正常监视器性能