C#学习教程:在类库中包含服务引用类库包括对Web服务的服务引用。当我尝试运行该项目时,我得到了一个InvalidOperationException,因为启动项目没有读取类库的app.config,而忽略了服务引用。为了让它工作,我被迫向启动项目添加相同的服务引用。有什么办法可以避免这种情况吗?我可以让启动项目识别类库的服务引用和app.config而不将其复制到启动项目吗?我试过从类库添加到app.config的链接,但这不起作用。如果任何需要使用它的人将该服务引用添加到启动项目,则类库不是很便携。想想你想做什么-你有两个正在构建的程序集:LibraryConsoleApp两个程序集都有配置文件-我想它们看起来像这样:Libraryapp.configConsoleAppConsoleApp.exe.config当你运行ConsoleApp时它不能从您的库程序集中阅读或了解关于app.config的信息。它知道或关心的唯一配置文件是ConsoleApp.exe.config。现在可以让配置文件相互引用,但这不是您想要做的事情的正确解决方案。由于您的库程序集没有入口点,因此它永远不会加载到AppDomain中。因为它永远不会加载到AppDomain中,所以它的应用程序配置文件永远不会被使用。您应该做的是通过项目参考来参考ConsoleAppLibrary。然后将所有相关配置数据从app.config移至ConsoleApp.exe.config,因为这是您的应用程序将使用的配置文件。当您需要库中的两个代码可以发送和接收SOAP消息时,这将允许您调用Web服务上的方法。库运行所需的配置元数据。在类库中使用服务引用然后复制配置的替代方法是使用调用svcutil.exe的构建事件。我喜欢的是您不必在服务更改时执行“更新服务参考”。它将自动更新。在类库中,使用仅生成代理代码的构建事件:svcutil.exenet.tcp://localhost:3315/MyService/mex/noConfig在应用程序中,使用生成配置的构建事件。您可以使用/mergeConfig选项将其合并到现有的app.config中。svcutil.exenet.tcp://localhost:3315/MyService/mex/config:App.config/mergeConfig如果您不希望在服务未运行时出现构建错误,请将其放入您的项目文件中,您将收到警告而不是错误:您可以将app.config的相关部分从类库的配置复制到控制台应用程序的app.config中。或者,如果你真的想让它真正可移植,那么你需要考虑另一种方式,从类库内部引用特定服务引用的地址。您只需将指向服务的配置键从类库配置文件复制到控制台应用程序的配置文件。我认为如果您运行多个配置文件会更加混乱。如果一个库有可配置项,我完全希望该配置必须放在我的配置文件中才能正确使用该库。以上为C#学习教程:包括类库中服务引用分享的所有内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
