使用net-core是否可以创建独立可执行文件?

3
当我运行以下命令时:
dotnet build -c Release

我已经得到了我的项目程序和必要的dll文件,但是为了使程序在另一台计算机上工作,我必须安装计算机与计算机之间的.NET Core Runtime 是否有可能创建一个独立的Windows程序?

你尝试过使用 dotnet publish 命令吗? - DavidG
@DavidG 很遗憾,这对此无效,仍然出现错误:“发生致命错误。找不到所需的库hostfxr.dll。”...之后我尝试重新编译使用--self-contained,但是我得到了:error NETSDK1031:构建或发布不指定RuntimeIdentifier的自包含应用程序不受支持。请指定RuntimeIdentifier或将SelfContained设置为false。我确定我忘记了某些东西,这是我的错,但目前我承认我迷失了。 - Guilherme Nascimento
那么,也许你应该指定一个运行时标识符?有一个“-r”命令... - DavidG
@DavidG 我正在测试:https://learn.microsoft.com/zh-cn/dotnet/core/tools/csproj#runtimeidentifiers - Guilherme Nascimento
@DavidG -r参数和<RuntimeIdentifier>都能正常工作。不幸的是,我们发送了大量的DLL文件。我们创建了所有这些需要,但现在总共重达68MB。也许这是现代应用程序的一个不好的方面,包括Qt(这使我在“发布应用程序”的重量上受苦)。 - Guilherme Nascimento
1个回答

3
为了创建一个自包含的可执行文件,您应该使用dotnet publish命令。例如:
dotnet publish -r win-x64 -c release

如果您正在使用.NET Core 3,您可以通过在csproj文件中添加PublishTrimmed属性来裁剪大量这些库,例如:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishTrimmed>true</PublishTrimmed>
  </PropertyGroup>
</Project>

如果您的应用程序没有使用反射调用框架库(即dotnet命令无法确定您需要保留哪个库),则您的输出将更小。


非常好的答案!谢谢! :) - Guilherme Nascimento

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接