VS 2014 CTP 无法识别 mscorlib 中的命名空间

Posted

技术标签:

【中文标题】VS 2014 CTP 无法识别 mscorlib 中的命名空间【英文标题】:VS 2014 CTP doesn't recognize namespaces in mscorlib 【发布时间】:2014-11-07 22:29:06 【问题描述】:

我在 Windows 8.1 虚拟机中安装了 vs 2014 ctp 3。并尝试创建一个 vnext 库。 当我在代码中添加 using 语句时:

using System.Diagnostics;  
using System.Threading.Tasks;

public Task Log(LogLevel level, IFormatProvider formatProvider, string message, params object[] args)  

    return Task.Run(() =>  
      
        if (IsLogLevelEnabled(level))  
          
            string category = Enum.GetName(typeof(LogLevel), level);  
            string info = string.Format(message, args);  
            Debugger.Log((int)level, category, info);  
          
    );  
  

“Debugger.Log”确实提供了代码智能,这可能意味着 vs 在 mscorlib 中找到了引用。如果我按“F12”,vs 将导航到 mscorlib.dll 中的 Debugger 代码。但是,当我尝试构建项目时,它总是抛出:

名称“调试器”不在当前上下文中。

我尝试在 project.json 中添加引用,但是没有“System.Diagnostics”可供参考。如果我在 project.json 中写了“System.Diagnostics”:“”,项目的引用中会出现警告。

我该怎么办?提前谢谢你。

【问题讨论】:

【参考方案1】:

如果您有 CTP3 模板提供的默认 project.json,则您定义了 k10 (CoreCLR) 目标框架,以及良好的旧 net451。 Debugger 类在 k10 目标框架中没有那个方法(不要问我为什么),因此不会构建。从您的 project.json 中删除 k10 目标,它将构建,但现在只针对 net451。

尽管您的项目始终构建为 net451,但 VS14 并没有为您提供查看哪个目标框架失败的好方法。希望他们尽快添加此功能。

这个 project.json 构建:


    "dependencies": 
        "System.Diagnostics": "",
        "System.Threading": ""
    ,

    "frameworks" : 
        "net451" :  
            "dependencies": 
            
        
    

这不成立:


    "dependencies": 
        "System.Diagnostics": "",
        "System.Threading": ""
    ,

    "frameworks" : 
        "net451" :  
            "dependencies": 
            
        ,
        "k10" :  
            "dependencies": 
                "System.Runtime": "4.0.20.0"
            
        
    

【讨论】:

非常感谢。我现在就试试。

以上是关于VS 2014 CTP 无法识别 mscorlib 中的命名空间的主要内容,如果未能解决你的问题,请参考以下文章

未能解析目标框架“.NETFramework,Version=v4.0”的 mscorlib的解决方法

创建新项目时出现 vs2015 ctp6 错误

vs中程序集的引用

VS2012 使用 C++ 编译器 2012 年 11 月 CTP (v120) 强调错误错误

如何从visual studio 2013中禁用mscorlib.dll?

实体框架代码优先 CTP5:如何定义非原始类型