2015-12-10 12 views
6

Mam stary projekt ASP.NET Web Form, który muszę również dodać do biblioteki asynchronicznej. Zaktualizowałem go do .NET Framework v4.5.1. Działa i kompiluje się idealnie z Visual Studio 2013.TaskAwaiter nie implementuje INotifyCompletion podczas używania Visual Studio 2015

Jednak, gdy otworzę go w Visual Studio 2015, nie będzie się kompilował. Każde wywołanie asynchroniczne ma błąd TaskAwaiter does not implement INotifyCompletion.

Na przykład, następujący kod:

public async Task AsyncDelay() 
{ 
    await Task.Delay(1); 
} 

Rzuć następujący błąd:

CS4027 'TaskAwaiter' does not implement 'INotifyCompletion'

Każda pomoc w ogóle byłoby mile widziane.

+2

Ten kod nie powiedzie się zupełnie inaczej do mnie: „Test.cs (17,9): error CS1997: Ponieważ 'Test.AsyncDelay()' jest async metoda, która zwraca "Zadanie", słowo kluczowe return nie musi być po wyrażeniu obiektu. Czy masz zamiar zwrócić '' Task ''?" To nie jest wcale jasne, co próbujesz zwrócić, szczerze mówiąc. Co próbujesz osiągnąć? Byłbym bardzo zaskoczony, widząc tę ​​kompilację w dowolnym scenariuszu. –

+0

@JonSkeet - Przepraszam, poprawiłem powyższy kod. Nie chciałem umieścić tam tego oświadczenia zwrotu. Zauważam też, że ten kod tak naprawdę nic nie robi, po prostu chciałem pokazać, że wszystkie moje asynchroniczne połączenia są zepsute. –

Odpowiedz

10

W końcu znalazłem problem. Ten pakiet został zainstalowany Nuget

https://www.nuget.org/packages/Microsoft.CompilerServices.AsyncTargetingPack/1.0.1

który był tam, aby wesprzeć starszych wersji programu Visual Studio. Usuwam to i wszystko działa.

straciłem zbyt wiele czasu na ten jeden ...

+1

Nie wiem, jak to zabrałeś (rozwach)? Ale kudos +1 – wal

+1

Pomimo "odinstalowania" pakietu (ów) NuGet lub niezainstalowania ich, wciąż miałem odniesienie do '' 'Microsoft.CompilerServices.AsyncTargetingPack .Net4''', które musiało zostać usunięte. – starlocke

Powiązane problemy