我在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”:“”,那么项目的引用就会出现警告。
我该怎么办?提前谢谢。
答案 0 :(得分: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"
}
}
}
}