在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回滚后,编译成功。