2015-05-14 53 views
1

在之前的項目中,我在Visual Studio C#2010中添加了服務引用,Studio生成的代碼是這樣的(第三方Web服務可能是用WCF):在Windows桌面的Visual Studio 2012中添加服務引用時意外重構

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 for Windows Desktop中的某些設置進行控制嗎? (我對調整生成的代碼有點不安)

回答

0

我最終發現服務引用函數聲明中的差異是由解決方案的目標.NET引起的。

在一種情況下(VS 2010 C#),目標是.NET 4.0,而在另一種情況下(VS 2012 C#)目標是.NET 4.5。在將VS 2012解決方案服務引用與.NET 4.0一起添加爲目標之後,函數聲明與VS 2010 C#中的相同。

相關問題