Did you ever encounter this dialog box when dealing with WCF services?
"The target assembly contains no service types. You may need to adjust the Code Access Security policy of this assembly."
It might happen when you run application at debug time. It is highly annoying and time consuming (it pauses application for more than one minute without any apparent reason). But what does it mean and why does it happen?
When you create a project from a WCF project templates Visual Studio knows that this project is a WCF service and thus it offers two debug time helpers: WCF Service Host and WCF Client. These two guys are intended to help you with running and testing WCF services without writing any code - they just appear at debug time. So far so good. But why the annoying dialog?
The dialog in question means that you have a project, created using one of the WCF project templates, 你有一個用WCF模板創建的項目with an interface marked with ServiceContract attribute這個項目中有一個接口被標記為服務契約 and in the same project you don't have a class that implements this interface但是在這個項目中,你卻沒有一個類去實現這個契約 (perhaps you implemented that interface in another project獲取你是在別的項目中實現的這個接口). So, the WCF Service Host can't find a suitable class to host the service and it complains through that dreaded dialog box這樣,WCF Server Host不能發現一個合適的類去宿主這個服務,於是就報出了那個窗口. Note that WCF Service Host is pretty dumb不靈活的 and it is incapable of不會 searching through other projects in same solution. OK, the solution is to stop running WCF Service Host or even better, instruct it which class implements the interface in question(VS應該的解決辦法是停止運行WCF Service Host,通知一下是哪個類的哪個端口出錯了). Well, AFAIK【As Far As I Know (就我所知)】 the later is impossible while the former can be done through project file modification using notepad. Here is how:
Delete this line from your project file:
<ProjectTypeGuids>{3D9AD99F-2412-4246-B90B-4EAA41C64699};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
And you won't see WCF Service Host or dreaded dialog anymore.
The question is, why didn't Microsoft think of these scenarios before?
BTW【By The Way 順便(說一句)】, if you just want to stop WCF Client from runing ,then delete this command line argument: /client:"WcfTestClient.exe", created by WCF project template.