我有一个 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 服务上调用方法所需的两件事
库
中的代码可以发送和接收 SOAP 消息。库
运行所需的配置元数据。
关于c# - 包括来自类库的服务引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/529550/