尝试System.Threading.Tasks.dll
从C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETCore\v4.5
. 或者,您可以使用C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\Facades
目录。
更新:在阅读了有关删除对的引用的答案System.Runtime
后,我进一步检查了该问题,我可以添加以下内容:System.Runtime
由于 NuGet 包的当前版本中的错误,将添加对的引用Microsoft.Tpl.Dataflow.4.5.1-rc
。如果System.Threading.Tasks.Dataflow.dll
直接在 Visual Studio 中添加对相同的System.Runtime
引用,则不会添加引用并且不存在问题。
使用NuGet 包资源管理器Microsoft.Tpl.Dataflow.4.5.1-rc.nupkg
可以从“NuGet 官方包源”下载原版。在 Package Matadata 的末尾,您将看到
可以修改元数据(按Ctrl-K)并删除引用:
之后,可以将修改后的文件保存Microsoft.Tpl.Dataflow.4.5.1-rc.nupkg
在某个目录中。在 NuGet 源列表(请参阅此处或此处)中添加新位置(本地目录)后,将能够从本地源添加新包(不要忘记选择显示所有包,包括预发布版本,请参阅下图):
修改Microsoft.Tpl.Dataflow.4.5.1-rc.nupkg
不添加System.Runtime
,项目编译无误。
所以这个 bug 不存在于 Visual Studio 2012 RC 中,甚至不存在于Microsoft.Tpl.Dataflow.dll
. Microsoft.Tpl.Dataflow
该错误仅在“NuGet 官方包源”上当前可用的 NuGet 包预发布版本的元数据中。
您可以将错误报告发布给autors,以便修复包。
更新 2:即使我的答案已经被标记为已解决,并且授予问题的赏金仍然没有从我的脑海中消失。实际上,我看到了两个未解决的问题:
- 为什么在项目构建过程中存在未使用的程序集会
System.Runtime
产生错误。
- 我在 NuGet 包的卸载或更新工作方式中看到了一些一般性问题(请参阅稍后的详细信息)。
让我们接受这样一个事实,即第一个问题独立于原因而存在。第二个问题让我坐立不安。我在这里看到了真正的问题。大家可以做以下实验来更好地理解我:
- 在 Visual Studio 2012 RC 中创建一个新的空控制台应用程序。
- 验证项目没有引用
System.Runtime
.
- 从“工具”/“库包管理器”打开“包管理器控制台”。
- 在“包管理器控制台”中执行命令“ Install-Package Microsoft.Tpl.Dataflow -Pre ”。
- 验证两者
System.Runtime
和System.Threading.Tasks.Dataflow
都包含在项目的参考列表中。
- 在“包管理器控制台”中执行命令“ Uninstall-Package Microsoft.Tpl.Dataflow ”。
- 验证
System.Threading.Tasks.Dataflow
已从项目的引用列表中删除,但System.Runtime
仍在引用列表中。
我又做了一个实验,我更改了 modified 的版本Microsoft.Tpl.Dataflow.4.5.1-rc.nupkg
,其中我删除了对System.Runtime
、 from 4.5.1-rc
to的引用4.5.1-rc1
并将其保存在本地(它将保存在 下Microsoft.Tpl.Dataflow.4.5.1-rc1.nupkg
)。之后,我可以在我的项目更新列表中看到“新”版本:
如果我安装更新,对的引用System.Runtime
也不会被删除。
因此,NuGet 的“更新”和“卸载”的当前实现存在错误或一般设计问题。如果我们向我们的项目添加一个包并对项目进行一些更新,我们将获得所有旧版本的所有依赖程序集的引用。NuGet 从旧版本的包中添加的旧引用在 Uninstall 或 Update 期间不会被删除。首先项目引用有垃圾本身不好,但是由于存在第一个问题(如果System.Runtime
存在未引用的引用,则编译时出错)问题会更加严重。
因此,如果 NuGet 中没有任何更改,则更新到下一个版本Microsoft.Tpl.Dataflow
将无法解决安装Microsoft.Tpl.Dataflow
在 4.5.1 版(或可能是早期版本)中的用户的问题。所有用户都必须System.Runtime
手动删除对的引用。我认为这是真正的 NuGet 问题,必须由 NuGet 开发人员解决。稍后我会将问题的描述发布到http://nuget.org/。
我发布到 NuGet 的错误报告可以在这里找到(抱歉,文本格式不完美)。