项目构建成功非常奇怪,但在Visual Studio 2015中出现了这个错误:
错误CS0012“任务”类型在未引用的程序集中定义。您必须添加对程序集'System.Threading,Version = 1.0.2856.102,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'的引用。
以下是我的工作:
我在VS2015 Update3中创建了一个名为Library
的类库项目(.Net Core),并按如下方式更改project.json
:
{
"version": "1.0.0-*",
"frameworks": {
"net35": {
"dependencies": {
"TaskParallelLibrary": "1.0.2856",
"AsyncBridge.Net35": "0.2.0"
}
},
"net40": {
"dependencies": {
"Microsoft.Bcl.Async": "1.0.168"
}
}
}
}
Library
是多目标net35和net40,并且依赖于一些软件包,因此我们可以在net35和net40中使用async
和await
。
添加课程Foo
:
using System;
using System.Threading;
using System.Threading.Tasks;
namespace Library {
public class Foo {
public async Task Bar() {
await Task.Factory.StartNew(() => {
Console.WriteLine("bar");
}, new CancellationTokenSource().Token);
}
}
}
使用SomeApp
创建另一个名为project.json
的类库项目(.Net Core):
{
"version": "1.0.0-*",
"dependencies": { "Library": "1.0.0" },
"frameworks": {
"net35": {
"dependencies": {
"TaskParallelLibrary": "1.0.2856",
"AsyncBridge.Net35": "0.2.0"
}
},
"net40": {
"dependencies": {
"Microsoft.Bcl.Async": "1.0.168"
}
}
}
}
SomeApp
引用了Library
。
在App
项目中添加课程SomeApp
:
using Library;
using System.Threading.Tasks;
namespace SomeApp {
public class App {
public async Task DoWork() {
var foo = new Foo();
await foo.Bar();
}
}
}
App
正在调用Foo.bar()
。
它可以构建两个项目,并且在编译期间没有任何问题,但是如果在VS2015中的解决方案资源管理器中单击App.cs
项目中的SomeApp
,错误列表中出现错误:
那么我该如何修复错误?这是Visual Studio的错误吗?