2013-09-05 1 views
3

В настоящее время я пишу класс, который использует async..await-Pattern для выполнения асинхронных задач. В этом у меня есть метод, как так:Недопустимый токен 'void' при компиляции async..await на сервере сборки

public async void DoSomething() { 
    ... 
    await SomeObject.DoYourThingAsync(); 
    ... 
} 

Для справки: Проект настроен на использование .NET-Framework 4.5, и я использую VS2012. На моей машине он компилируется и работает отлично, но когда я проверяю его на TFS, сборка генерирует ошибку в объявлении функции. Сообщение: Недопустимый токен 'void' в объявлении члена класса, структуры или интерфейса

+1

Попробуйте изменить 'void' на' Task'. –

+0

Ваш сервер сборки не понимает модификатор 'async', поэтому, когда он достигает ключевого слова async, он предполагает, что это имя типа, и ожидает, что следующий токен будет именем поля, свойства или метода (и он выдает ошибку, потому что получает зарезервированное слово 'void'). – Groo

+0

Установлен ли сервер сборки .NET Framework 4.5? –

ответ

4

Похоже, ваш сервер сборки не понимает синтаксис C# 5. Для компилятора C# 4 async void (или async Task, если на то пошло) похоже, что вы указали два типа возврата.

Сконфигурируйте сборку на сервере, чтобы использовать синтаксис C# 5 или более новую версию компилятора.