在Visual Studio 2012中为Windows桌面添加服务参考时,意外的重构



在一个较早的项目中,我在Visual Studio C#2010中添加了服务参考,Studio生成的代码是此(第三方Web服务可能是使用WCF创建的):

System.Guid ServiceFunctionName(out string fileName, out int fileSize, System.Guid fileGuid, bool zip);

以上代码匹配服务第三方供应商文档中也出现的函数声明。

现在,对于一个不同的项目,我在新应用程序中添加了完全相同的服务参考,这次是在Visual Studio 2012中,并且生成的代码已被重构为具有原始返回类型的响应对象和两个out参数和一个带有两个参数的请求对象,这些参数是以前函数声明中的输入参数:

AppNamespace.ServiceReferenceName.ServiceFunctionNameResponse ServiceFunctionName(AppNamespace.ServiceReferenceName.ServiceFunctionNameReRequest request);
public ServiceFunctionNameRequest(System.Guid fileGuid, bool zip) 
{
    this.fileGuid = fileGuid;
    this.zip = zip;
}
public ServiceFunctionNameResponse(System.Guid ServiceFunctionNameResult, string fileName, int fileSize) 
{
    this.ServiceFunctionNameResult = ServiceFunctionNameResult;
    this.fileName = fileName;
    this.fileSize = fileSize;
}

在重构功能附近的生成代码中也有此评论,这很有意义,因为所讨论的函数返回3个值:

    // CODEGEN: Generating message contract since the operation has multiple return values.

为什么我在VS 2010和VS 2012中获得不同的功能声明?

这是我可以在Visual Studio 2012中用于Windows Desktop的某些设置的某些设置吗?(我对调整生成的代码有点不安)

我最终发现,服务参考函数声明的差异是由解决方案的目标.NET引起的。

在一种情况下(VS 2010 C#),目标为.NET 4.0,在另一种情况下(VS 2012 C#)目标为.NET 4.5。在VS 2012解决方案服务引用再次以.NET 4.0作为目标添加后,该功能声明与VS 2010 C#。

相同。

最新更新