【发布时间】:2017-06-15 22:32:32
【问题描述】:
我有两个项目。一个必须用 x86 架构构建,另一个必须用 x64 构建。
在我的 global.json 中,我指定了我想使用的架构:
"sdk": {
"version": "1.0.0-preview2-003131",
"architecture": "x64"
}
尽管如此,对于 x64 项目,我在构建输出中看到:
1> C:\Program Files (x86)\dotnet\dotnet.exe build "C:\websites\myproject".
我可以在 Visual Studio 2015 使用 C:\Program Files (x86)\dotnet\dotnet.exe 和 C:\Program Files\dotnet\dotnet.exe 之间进行切换em> 通过更改我的环境变量的顺序(如 here 所述)。但我希望有一种方法可以让 Visual Studio 选择正确的版本,而不必更改环境变量顺序。
有什么想法吗?
【问题讨论】:
-
此选项实际上用于 dotnet SDK/工具,即当您运行
dotnet run时,版本和架构将确定 'dotnet' exe 是从C:\Program Files\dotnet(x64) 还是C:\Program Files (x86)\dotnet(x86) 以及在 sdk 中选择正确的工具版本以使用(在各个 dotnet 位置的“sdk”文件夹内(见上文) -
@Tseng 有趣。但是当我将架构更改为 x86 或 x64 时,Visual Studio 并不在意。它似乎总是选择我的 PATH 中的第一个(当前是 ''C:\Program files (x86)\dotnet'')
-
你误读了我的评论。我没有说 Visual Studio 或编译器使用这个值!
global.json仅由 命令行命令 dotnet 使用,它不会改变编译架构。您可以在标签名称上看到sdk,而不是runtime或compile或类似名称。在您的项目内部运行dotnet --version,当您在带有global.json(即在C:)的文件夹外部运行它时,它应该显示Version: 1.0.0-preview2-003131,然后它会显示Version: 1.0.4或为您安装的最新 SDK 是什么。就是这样 -
如果您想要 64 位输出,您需要更改您的 csproj/项目属性中的构建设置。过去,如果同时安装了 x64 和 x86 运行时,只有最后一个运行时会出现一些问题,不知道现在是否已修复,但除非您有本地 x64-only 依赖项,否则在 C# 编译时编译到哪个并不重要相同的 CL 指令)
-
但是 iirc 如果您在 project.json 中定义了多个运行时,它也会在
bin\Debug\<targetframework>\<runtime>文件夹中创建适当的文件夹,即 `bin\Debug\net462\win7-x64`。但我在 2017 年 RTM 当天停止使用 VS2015
标签: visual-studio-2015 asp.net-core asp.net-core-mvc asp.net-core-1.0