2015-12-10 21 views
6

Tôi có một dự án ASP.NET Web Form cũ mà tôi cần phải thêm một thư viện async nữa. Tôi đã nâng cấp nó lên .NET Framework v4.5.1. Nó chạy và biên dịch hoàn hảo với Visual Studio 2013.TaskAwaiter không triển khai INotifyCompletion Khi sử dụng Visual Studio 2015

Tuy nhiên, khi tôi mở nó bằng Visual Studio 2015, nó sẽ không biên dịch. Mọi cuộc gọi không đồng bộ đều có lỗi TaskAwaiter does not implement INotifyCompletion.

Ví dụ, đoạn mã sau:

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

Ném các lỗi sau:

CS4027 'TaskAwaiter' does not implement 'INotifyCompletion'

Bất kỳ sự giúp đỡ ở tất cả sẽ được đánh giá cao.

+2

Đó là mã thất bại hoàn toàn khác nhau cho tôi: "Test.cs (17,9): lỗi CS1997: Từ 'Test.AsyncDelay()' là một phương thức async trả về 'Task', một từ khóa return không được theo sau bởi một biểu thức đối tượng. Bạn có ý định trả về ''Task ''? " Nó không phải là tất cả rõ ràng những gì bạn đang cố gắng để trở về, phải trung thực. Bạn đang cố gắng đạt được điều gì? Tôi thực sự ngạc nhiên khi thấy bản dịch này trong bất kỳ kịch bản nào. –

+0

@JonSkeet - Rất tiếc, tôi đã sửa mã ở trên. Tôi không có ý định đưa câu trả lời đó vào đó. Tôi cũng sẽ lưu ý rằng mã đó không thực sự làm bất cứ điều gì, tôi chỉ muốn chứng minh rằng tất cả các cuộc gọi không đồng bộ của tôi đều bị hỏng. –

Trả lời

10

Cuối cùng tôi đã tìm thấy sự cố. gói NuGet này đã được cài đặt

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

Đó là có để hỗ trợ phiên bản cũ của Visual Studio. Tôi loại bỏ điều này và tất cả mọi thứ hoạt động.

tôi đã lãng phí quá nhiều thời gian vào một này ...

+1

Tôi không biết làm thế nào bạn sleuthed rằng một (chăm sóc để xây dựng?) Nhưng kudo +1 – wal

+1

Mặc dù "gỡ bỏ cài đặt" NuGet gói (s), hoặc không có chúng được cài đặt, tôi vẫn có một tham chiếu đến '' 'Microsoft.CompilerServices.AsyncTargetingPack .Net4''' cần xóa. – starlocke

Các vấn đề liên quan