【发布时间】:2017-03-18 10:34:40
【问题描述】:
请参阅下面的解决方案部分了解 TLDR。
我使用 Visual Studio 2015 社区版并升级到 Visual Studio 2017。我正在开发一个 .NET Core 控制台应用程序。 我在这里只谈论我的本地开发机器,它安装了 Visual Studio 并安装了 .NET Core 运行时和 SDK。
在 Visual Studio 2015 中,使用了 project.json 文件,默认情况下,构建过程会在 bin/Debug/netcoreapp1.1 中生成一个 DLL 文件,可以使用 dotnet run 命令运行该文件。但是有一个选项可以在 project.json 文件中进行微调:
...
"Microsoft.NETCore.App": {
"version": "1.0.1",
"type": "platform"
},
...
->
...
"Microsoft.NETCore.App": {
"version": "1.0.1"
},
...
并添加一个runtimes 部分,例如
"runtimes": {
"win10-x64": {}
}
如果您这样做并构建了您的项目,则会创建一个 EXE 文件,您可以直接运行该文件,而无需使用 dotnet run。
现在的问题是,在 Visual Studio 2017 中使用 .csproj XML 文件是否可以实现相同的操作?更具体地说,是否有可能没有大量的独立部署?我确实希望它没有完整的 SDD 发布,因为我在开发过程中将这些可执行文件仅用于本地测试。一旦项目要发布,我就做SDD发布,但是在开发过程中非常不方便。
该项目已转换为 Visual Studio 2017,但它只会再次生成 DLL 文件。因此,我尝试创建一个全新的空 Hello, World! 程序并尝试从中获取 EXE 文件。 Hello, World! csproj 文件如下所示:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.1</TargetFramework>
</PropertyGroup>
</Project>
这只会生成一个您可以使用dotnet run 运行的 DLL 文件。可以对此进行更改:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp1.1;net46</TargetFrameworks>
</PropertyGroup>
</Project>
这非常接近我想要的 - 生成一个 EXE 文件。但是,这会创建运行 .NET Framework 4.6 而不是 .NET Core 的 EXE 文件。所以,它并不能解决问题。 我真正想要的是 .NET Core 可执行文件,而无需进行独立部署。有可能吗?
解决方案
我刚刚发现这确实是可能的。我只是不知道如何在IDE中做到这一点。如果我在 IDE 中按 Ctrl + Alt + F7 会产生与命令相同的结果:
dotnet build --configuration Debug
而我想要的可以通过命令产生:
dotnet build --configuration Debug --runtime win10-x64
所以我现在真正想要的是修改默认的 IDE 构建命令以使用 --runtime win10-x64 参数复制此行为。
【问题讨论】:
标签: exe .net-core visual-studio-2017 csproj