从C# WPF应用程序创建自包含的单个exe文件

7vhp5slm  于 2022-12-19  发布在  C#
关注(0)|答案(1)|浏览(375)

我试图创建一个单一的可执行文件分发这个基本的小应用程序:

using System;
using System.Windows;
namespace BlackScreen
{
  public partial class App : Application
  {
    [STAThread]
    public static void Main()
    {
      App app = new App();
      Window window = new Window();
      window.Show();
      app.MainWindow = window;
      app.Run();
    }
  }
}

我的csproj文件包含:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net7.0-windows</TargetFramework>
    <Nullable>enable</Nullable>
    <UseWPF>true</UseWPF>

    <PublishSingleFile>true</PublishSingleFile>
    <IncludeAllContentForSelfExtract>true</IncludeAllContentForSelfExtract>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
  </PropertyGroup>

</Project>

然而,当我运行dotnet publish -r Release时,我在Release文件夹中得到了许多文件,而不是一个exe文件。如果我只把exe文件从该文件夹中取出,并把它放在其他地方,它就不会运行,所以很明显,这几十个其他文件是必需的。
在以前对类似问题的回答中,推荐的方法是使用ilmerge,但是现在已经不推荐使用了。是否有替代方法,或者创建自包含的exe文件不再可能?

vsikbqxv

vsikbqxv1#

以下项目文件:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>WinExe</OutputType>
    <TargetFramework>net6.0-windows</TargetFramework>
    <Nullable>enable</N7llable>
    <UseWPF>true</UseWPF>
    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
  </PropertyGroup>

</Project>

...和以下命令...:

dotnet publish -c Release -r win-x64 --self-contained -p:PublishSingleFile=true -p:PublishReadyToRun=true

...可用于创建自包含的单文件部署WPF应用程序。

相关问题