VS2015 C# interactive: error CS7069: Reference to type 'Object' claims it is defined in 'System.Runtime', 但找不到

VS2015 C# interactive: error CS7069: Reference to type 'Object' claims it is defined in 'System.Runtime', but it could not be found

我刚更新到 VS2015 Update 2, and started playing around with the C# interactive window。我想在我的 .NET 4.0 目标库项目之一的静态 class 中使用静态方法,因此我在解决方案资源管理器中右键单击该项目,然后选择 Initialize Interactive with Project。交互式 window 中的输出如下所示(为简洁起见,我用“..”替换了一些完整路径):

#reset
Resetting execution engine.
Loading context from 'CSharpInteractive.rsp'.
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.dll"
#r "..\src\packages\Microsoft.Bcl.Async.1.0.168\lib\net40\Microsoft.Threading.Tasks.Extensions.Desktop.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Core.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.IO.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Net.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Runtime.dll"
#r "..\src\packages\Microsoft.Bcl.1.1.8\lib\net40\System.Threading.Tasks.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Web.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.Linq.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.DataSetExtensions.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Microsoft.CSharp.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Data.dll"
#r "C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies\System.Net.Http.dll"
#r "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Xml.dll"
#r "MyDll.dll"
using MyDll;
(1,7): error CS7069: Reference to type 'Object' claims it is defined in 'System.Runtime', but it could not be found

注意最后那句讨厌的小线,挡住了我通往幸福的路:

(1,7):错误 CS7069:对类型 'Object' 的引用声称它在 'System.Runtime' 中定义,但找不到

我获得了项目中 classes 的智能感知,但每次尝试 运行 语句时,我都会遇到同样的错误。我仍然可以 运行 简单的事情,例如:

> string.Format("No one knows my {0}", "suffering")
"No one knows my suffering"
>

任何人都知道为什么会发生这种情况或如何解决它?我将使用任何 [un] 成功的建议修复更新此问题。

最终为我解决问题的是在 C# Interactive window.:

中输入此

#r "System.Runtime"

如果有人可以提供详尽的背景解释,说明为何如此有效,我很乐意为您提供可接受的答案。我只是运气好。

虽然添加答案似乎有点晚,但实际上 Visual Studio 2019 (v16.9.4) 仍然可能存在当前问题,或者至少这是给我的...

在我的例子中,它与对 .NET Framework 标准包的引用无关,但与对我在解决方案中的一个项目的引用有关。

我按照以下步骤成功解决了问题:

  1. 从问题所在的项目中删除 package/project 引用。

  2. 清理已发布的项目(要进行更多清理,您还可以从资源管理器中删除 bin/obj 文件夹)。

  3. 如果引用是一个项目,CleanRebuild 引用的项目。

  4. 再次添加对 package/project 的引用并在解决方案中重建所有内容。

希望对您有所帮助!