在Visual Studio 2015中將一個包含WCF引用的項目的targetFramework從4.5改為4.6.1的時候,VS2015會重新生成WCF客戶端代理類。如果WCF引用配置中選中了"Reuse types in referenced assemblies"(這是默認配置),生成的所有WCF客戶端代理類都為空(Reference.cs文件內容為空)。
這個問題在2015年4月的時候開始遇到,詳見:生成WCF代理類的奇怪問題。2016年1月再次遇到,詳見:.NET 4.6.1生成WCF客戶端代理的問題。以前的解決方法都很麻煩。
今天又遇到了這個問題,實在不想使用以前的解決方法,於是換了一個思路:既然問題是Reference.cs文件內容為空引起的,那把targetFramework為4.5時生成的Reference.cs文件復制過來不就可以了嗎?而且借助git,這個復制操作都可以省了。
於是就用這個思路解決了問題:在將targetFramework從4.5改為4.6.1之后,用git回滾這個項目的Service References文件夾中的所有修改,git回滾后,編譯成功。