【问题标题】:Start an asp.net core project as x86 under visual studio 2015在visual studio 2015下启动一个asp.net core项目为x86
【发布时间】:2017-01-22 19:36:46
【问题描述】:

我有一个包含 asp.net 核心项目的 vs2015 解决方案,并已将其 project.json 配置如下:

{
  "buildOptions": {
    "emitEntryPoint": true,
    "preserveCompilationContext": true,
    "platform": "x86"
  },
  "runtimes": {
    "win10-x86": {}
  },
  "frameworks": {
    "net461": {}
  },
  "commands": {
    "web": "Microsoft.AspNet.Hosting --ASPNET_ENV production --server Microsoft.AspNet.Server.Kestrel --server.urls http://+:12345",
  }
  [...]
}

我希望应用程序能够在 project.json 中指定的平台上构建和运行(仅供参考,我正在通过 vs2015 调试器在 win10/x64 机器上运行该应用程序)。但是,使用 win7-x64 运行时代替。我可以看到一个 win7-x64 输出目录,并且启动的提示标题也表明了它。

如果我通过指定运行时的命令行直接构建和运行,它可以工作。

所以我的问题是,我还需要配置什么才能从 vs2015 在 x86 中启动 asp.net 核心应用程序?

【问题讨论】:

    标签: c# visual-studio-2015 asp.net-core


    【解决方案1】:

    有两种选择:

    1. (全局)卸载 64 位 .net SDK 并安装 32 位 SDK。之后重启 VS。
    2. (本地)将新的 .net SDK 放在不同的文件夹中,然后从控制台将该路径添加到您的 PATH。然后从那里开始VS。它将选择在 PATH 上找到的第一个 dotnet。

    【讨论】:

    • 听起来.. 极端。正如我所说,我可以从指定 rid 的命令行构建和运行我的应用程序的 x86 版本(所以,我认为我确实有适当的运行时)。但奇怪的是我无法控制从 vs2015 GUI 中进行选择。
    • 谢谢维克多,毕竟你是对的。我以某种方式期待 vs2015 神奇地从 project.json 推断出我想要启动的运行时版本..
    【解决方案2】:

    Victor Hurdugaci 的回答应该被投赞成票,这里只是提供了一些更多信息以备您需要。

    当您同时安装 x86 和 x64 .NET Core 版本时,似乎存在工具问题(更多信息请点击此处:32 bit not in good state and workarounds 和链接)。

    在 project.json 中将“buildOptions”设置为“platform”:“x86”和“runtimes”:设置为“win7-x86”不起作用(根据 PATH 环境变量,在构建过程中仍可以创建 x64 目录) .

    这有望在他们从 project.json 切换到 .csproj 后得到修复(为什么他们在此处更改它:Changes to Project.json)。

    当你安装了这样的两个版本时(.NET Framework Downloads):

    需要在path环境变量中设置顺序:

    让您要使用的那个首先出现,然后(重新)启动 Visual Studio。

    要检查哪个 dotnet 当前处于“活动”状态,请在控制台中运行:dotnet --info。

    【讨论】:

    • 注意“(这将)固定(何时)从 project.json 切换到 .csproj”。我有点讨厌它还没有被我们现在所拥有的东西所修复。为什么 vs2015 不为此目的使用 global.json > "sdk" > "architecture" ?这个标志似乎从 dnx 旧时代就被遗忘了。知道开发人员在按下 F5 时打算运行什么 CLI 可能是一个很好的(有效的?)选项......关于 .csproj 的选择,甚至不要让我开始那个糟糕的举动:/
    【解决方案3】:

    这对我有用:

    一个小时前,Visual Studio 2015 团队发布了一个新的更新,标记为“Microsoft Visual Studio 2015 Update 3 (KB3165756)

    安装后,一切正常。

    非常感谢 MS 和 .net core / vs2015 团队非常及时的发布 :)


    附录:

    安装更新是不够的(尽管我怀疑它是修复的一部分)。您需要遵循@VictorHurdugaci 指令来完成这项工作的其他步骤:

    1. 确保您已安装 x86 版本的 .net SDK

    2. 并确保 "C:\Program Files (x86)\dotnet\""C:\Program Files\dotnet\" 之前的 PATH 顺序安装新软件包时无法保证运行时(我想同时保留 x86 和 x64 运行时)

    感谢 VictorHurdugaci,最终你是绝对正确的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 2016-04-09
      相关资源
      最近更新 更多