如何从 C# WPF 项目构建具有静态 .NET 运行时的单个 .exe 文件?

问题描述 投票:0回答:2

Visual Studio 2022 C# WPF 项目

我想分发单个 .exe 文件,而不要求目标计算机安装 .NET 6.0 运行时。

我只能在项目的属性窗口中找到C/C++代码生成的解决方案,但我在VS 2022中看到的完全不同,并且没有静态链接的设置。

c# wpf visual-studio visual-studio-2022
2个回答
1
投票

如何部署单文件 .NET 6 WPF 应用程序:

  • 解决方案资源管理器中右键单击 WPF 应用程序项目,然后选择编辑项目文件

  • 将以下行添加到

    <PropertyGroup>
    文件中的
    .csproj
    元素:

    <IncludeNativeLibrariesForSelfExtract>true</IncludeNativeLibrariesForSelfExtract>
    
  • 解决方案资源管理器中右键单击项目,然后选择发布

  • 目标运行时设置下将部署模式设置为自包含

  • 选择 win-* 作为 目标运行时

  • 检查文件发布选项下的生成单个文件

    选项
  • 单击保存,然后单击发布

  • 目标位置的内容复制到目标机器并运行应用程序`

.csproj:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net6.0-windows</TargetFramework>
        <Nullable>enable</Nullable>
        <UseWPF>true</UseWPF>
        <IncludeNativeLibrariesForSelfExtract >true</IncludeNativeLibrariesForSelfExtract>
    </PropertyGroup>

</Project>

FolderProfile.pubxml:

<?xml version="1.0" encoding="utf-8"?>
<!--
  https://go.microsoft.com/fwlink/?LinkID=208121. 
  -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <Configuration>Release</Configuration>
    <Platform>Any CPU</Platform>
    <PublishDir>bin\Release\net6.0-windows\publish\win-x64\</PublishDir>
    <PublishProtocol>FileSystem</PublishProtocol>
    <TargetFramework>net6.0-windows</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <SelfContained>true</SelfContained>
    <PublishSingleFile>True</PublishSingleFile>
    <PublishReadyToRun>False</PublishReadyToRun>
  </PropertyGroup>
</Project>

0
投票

这个问题的权威答案在这里:

https://learn.microsoft.com/en-us/dotnet/core/deploying/single-file/overview?tabs=cli#include-native-libraries

我按照 Microsoft 的简单说明操作并获得了我的单个 .exe 文件。

© www.soinside.com 2019 - 2024. All rights reserved.