2015-05-14 3 views
1

В более раннем проекте я добавил ссылку на службу в Visual Studio C# 2010, и код, созданный Studio, был таким (сторонняя веб-служба, вероятно, была создана с помощью WCF):Неожиданный рефакторинг при добавлении ссылки на службы в Visual Studio 2012 для Windows Desktop

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? (Мне немного неловко о сгенерированном сгенерированном коде)

ответ

0

Наконец-то я понял, что различие в объявлениях ссылочной функции службы было вызвано целевым .NET решения.

В одном случае (VS 2010 C#) целью был .NET 4.0, а в другом случае (VS 2012 C#) была установлена ​​.NET 4.5. После того, как ссылки службы поддержки VS 2012 были снова добавлены с .NET 4.0 в качестве цели, объявления функций были такими же, как в VS 2010 C#.

 Смежные вопросы

  • Нет связанных вопросов^_^