在 Visual Studio 2015 年切换 DNX 版本?

Switch DNX Version in Visual Studio 2015?

我使用 dnu 和 dnx 开始了一个新的 web 项目。我能够在 Visual Studio 中打开它并且一切正常。现在我安装了 Facebook SDK nuget 包,但它与 DNX Core 5.0 不兼容。我有两组参考文献,一组用于 DNX Core 5.0,一组用于 DNX 4.5.1。编译时出现错误,因为找不到类型,尽管我可以在代码中正常输入它们并且智能感知工作正常。

我找不到设置版本的地方。在 global.json 中,它说我的版本是“1.0.0-rc1-final”,看起来像 'clr' 运行时,而不是 'coreclr'。这是否意味着它是 4.5.1?好像跟那些版本没有关系。

查看 project.json 我看到 facebook 仅适用于框架 'dnx451',如果我将它添加到 'dnxcore50' 然后我得到一个错误,Facebook 7.0.6 不支持 DNXCore , 版本=v5.0.

"frameworks": {
  "dnx451": {
    "dependencies": {
      "Facebook": "7.0.6"
    }
  },
  "dnxcore50": {
    "dependencies": {
      "Facebook": "7.0.6"
    }
  }
},

搜索整个项目后发现这是这些字符串唯一存在的地方。从命令行执行递归 grep 显示路径中有很多行包含这些字符串(即 lib/dnxcore50/)。 parent 似乎是 DNXCore,Version=v5.0.

对 DNX 进行全面搜索,我发现 Web 配置有一个 httpPlatform 条目:

    <httpPlatform processPath="%DNX_PATH%"
         arguments="%DNX_ARGS%"
         stdoutLogEnabled="false"
         forwardWindowsAuthToken="false"
         startupTimeLimit="3600" />

如何告诉我的项目使用框架 dnx451

如果您继续引用 dnxcore50 作为可能的目标框架 Visual Studio 将阻止您构建,除非所有引用的包都与它兼容。它试图确保您可以 运行 两个框架上的应用程序。

您只需从框架中删除 dnxcore50 即可删除依赖项并确保始终为 dnx451 构建。

"frameworks": {
  "dnx451": {
    "dependencies": {
      "Facebook": "7.0.6"
    }
  }
},