我在VS2010与3个项目的解决方案:如何在VS2010中为主机和客户端项目维护WCF服务库?
- WCFServiceLib - 与WCF服务库模板创建一个项目。
- ServiceHostConsole - 使用控制台应用程序模板创建的项目。
- ServiceClientConsole - 使用控制台应用程序模板创建的项目。
VS模板在WCFServiceLib中创建了一个app.config,其中包含我想要公开的服务的所有设置。
ServiceHostConsole具有WCFServiceLib作为参考并承载服务,但没有它自己的app.config文件。
如果我尝试运行没有app.config的主机项目,它无法托管服务,所以我将app.config从WCFServiceLib移到了ServiceHostConsole。
ServiceClientConsole具有对WCFServiceLib中的服务的服务引用。但是,一旦我将app.config从Lib项目移动到Host项目,我就不能再更新服务引用或添加添加到lib项目中的新服务。
为了让客户端项目查看服务引用,我必须将app.config移回到lib项目中,对客户端上的服务引用执行更新/添加,然后将app.config移回到主机项目。
请注意,我不能在Service Lib项目和主机项目中保留重复的app.config文件,因为这会导致主机无法启动。无论如何,这将是一个糟糕的解决方案,因为它会在不同的地方创建重复的配置。只改变其中一个可能会产生难以追踪的问题。
这似乎很奇怪,这app.config文件左右移动需要发生,使主机和客户端都工作,并且他们不能同时工作。
我相信这肯定是我设置方式的一个问题(尽管我使用默认模板设置了它们),我想一定有更好的方法来解决这个问题。
这个问题就变得时你都在积极开发服务,并需要不断用更新的服务运行主机和测试客户端,这个问题看标题很讨厌:
你如何保持一个WCF服务VS2010中的库适用于主机和客户端项目?
运行主机应用程序,然后添加服务引用完美无缺!我想我没有真正理解,当我直接向它添加服务引用时,存在库的自动托管过程。感谢您的解释。 – 2011-06-16 21:12:36
“您必须在不调试的情况下运行该服务”。这是一个很大的帮助。在解决方案属性下,只需将主机设置为唯一要启动的项目,然后按ctrl + f5即可。这将在未经调试的情况下启动主机,并允许您在同一项目中更改客户端 - 允许您添加服务参考。 – Trevor 2013-02-06 09:06:36