为什么我的 project.json / xproj 项目无法在 Visual Studio 15(预览)中打开?

Why does my project.json / xproj project not open in Visual Studio 15 (preview)?

我有一个涉及多个 project.json(和相应的 xproj)项目的现有解决方案,我已经研究了一段时间。它在 Visual Studio 2015 中运行良好,但无法在 VS 15(预览)中加载,只是为每个显示加载失败图标。不打印任何消息。

这是怎么回事,我该如何解决?

您的 xproj 可能是使用早期版本的 dnx 工具创建的(自动)。这使用了当时支持的特定 MSBuild 导入,但随着 DNX 工具的发展已被替换(最近:被 DotNet 替换)。

向后兼容性保留在 VS 2015 中,但对这些旧 xproj 的支持尚未保留在 VS 15 中。因此,您需要编辑您的 xproj,或者(更简单)只需 删除 .xproj 和 .xproj.user,从解决方案中删除项目,然后重新添加;这将使用当前工具重新创建 xproj。

如果你想手动编辑它,你应该替换:

<Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.Props"
    Condition="'$(VSToolsPath)' != ''" />
...
<Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.targets" 
    Condition="'$(VSToolsPath)' != ''" />

与:

<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.Props"
    Condition="'$(VSToolsPath)' != ''" />
...
<Import Project="$(VSToolsPath)\DNX\Microsoft.DNX.targets" 
    Condition="'$(VSToolsPath)' != ''" />

或:

<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.Props"
    Condition="'$(VSToolsPath)' != ''" />
...
<Import Project="$(VSToolsPath)\DotNet\Microsoft.DotNet.targets"
    Condition="'$(VSToolsPath)' != ''" />

如您所见,这反映了工具的演变。 VS 15 不再支持第一个选项。最后一个选项可能最接近 RTM 的样子,但在 VS 2015 中无法使用当前工具。所以...您现在可能想要中间选项。

安装 Visual Studio 2015 工具(预览版 2):https://go.microsoft.com/fwlink/?LinkId=827546

然后在路径 C:\Program Files\dotnet\sdk

中使用特定版本配置您的 global.json

适合我...