【发布时间】:2016-11-30 01:32:50
【问题描述】:
如何告诉 Visual Studio 针对多个运行时进行构建?
我创建了一个简单的 .NET Core (1.0) 控制台应用程序(带有 HTTP 下载的 Hello World)。我想为多个 RID(win7-x64、win10-x64 等)构建它,以便我可以发布它并包含在 Windows 2008 R2 (win7-x64) 上运行的独立应用程序的依赖项。但是我正在构建它的开发人员机器是 Windows 10,因此 VS 选择了 win10-x64,因此我的发布任务找不到任何适用于 win7-x64 的文件。我还想专门为 win10-x64 构建,所以即使我可以通过删除其余 RID 来强制它,我希望选择针对多个构建。
我知道我可以使用 MSBuild 和 dotnet cli 做到这一点,但我想知道如何在 VS 中做到这一点。
project.json:
{
"version": "1.0.0-*",
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"Microsoft.NETCore.App": "1.1.0",
"System.Net.Http": "4.1.0"
},
"runtimes": {
"win10-x64": {},
"win81-x64": {},
"win8-x64": {},
"win7-x64": {}
},
"frameworks": {
"netcoreapp1.0": {
"imports": "dnxcore50"
}
}
}
请注意,我使用的是 System.Net.Http,它需要 win7 和 win10 中的不同依赖项进行测试。如果我在 Win2k8 上运行 win10-x64,那么它将失败,因为它缺少 win7 上运行时的依赖项。
应该没关系,但这里是主要代码块 program.cs 供参考:
using System;
namespace TestOnWindows2008
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World");
using (var httpClient = new System.Net.Http.HttpClient())
{
string result = httpClient.GetStringAsync("https://www.microsoft.com/en-us/").Result;
Console.WriteLine(result.Substring(0, 200));
}
Console.WriteLine("Done");
}
}
}
【问题讨论】:
-
虽然 VS 集成仍处于预览阶段且不成熟,但您只是在这里提出了一些不切实际的要求。
-
我不确定您为什么认为它不切实际。发布 UI 有一个下拉菜单来选择您要发布的运行时,它只是不为选定的运行时构建。似乎缺少某些东西,或者我不知道该怎么做。答案可能是由于工具、错误或已知问题的当前级别,这是不可能的。但是,问一个关于已发布(即使它带有预览标签)并被许多开发人员使用的系统的问题不是公平的吗?
标签: c# visual-studio visual-studio-2015 .net-core project.json