You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过编程方式发布.NET Windows应用程序?

编程实现.NET Windows应用程序的发布操作

方法一:使用.NET CLI命令调用

通过代码启动进程执行dotnet publish命令,可直接指定发布路径、运行时、配置等参数,无需手动操作界面。

示例C#代码:

using System.Diagnostics;

// 配置项目路径和发布参数
var projectFullPath = @"D:\Projects\MyWinFormsApp\MyWinFormsApp.csproj";
var publishOutputDir = @"D:\Publish\MyApp";
var targetRuntime = "win-x64";
var targetFramework = "net7.0-windows";

var startInfo = new ProcessStartInfo
{
    FileName = "dotnet",
    Arguments = $"publish \"{projectFullPath}\" -c Release -o \"{publishOutputDir}\" -r {targetRuntime} --self-contained true",
    RedirectStandardOutput = true,
    RedirectStandardError = true,
    UseShellExecute = false,
    CreateNoWindow = true
};

using var publishProcess = Process.Start(startInfo);
publishProcess.WaitForExit();

// 读取执行结果
var outputLog = publishProcess.StandardOutput.ReadToEnd();
var errorLog = publishProcess.StandardError.ReadToEnd();

if (publishProcess.ExitCode == 0)
{
    Console.WriteLine("发布成功:");
    Console.WriteLine(outputLog);
}
else
{
    Console.WriteLine("发布失败:");
    Console.WriteLine(errorLog);
}

参数说明:

  • -c Release:指定以Release配置发布
  • -o:指定发布输出目录
  • -r:指定目标运行时(如win-x86、win-arm64)
  • --self-contained true:生成包含.NET运行时的独立部署包,若需依赖系统运行时可改为--no-self-contained

方法二:通过MSBuild API直接调用

若不想依赖命令行,可引用MSBuild相关库,直接在代码中触发发布流程。

  1. 先安装NuGet包:Microsoft.Build、Microsoft.Build.Framework、Microsoft.Build.Utilities.Core

示例代码:

using Microsoft.Build.Evaluation;
using Microsoft.Build.Execution;

var projectPath = @"D:\Projects\MyWpfApp\MyWpfApp.csproj";
var publishDir = @"D:\Publish\WpfApp";

// 加载目标项目
using var project = new Project(projectPath);

// 设置发布参数
project.SetProperty("Configuration", "Release");
project.SetProperty("PublishDir", publishDir);
project.SetProperty("RuntimeIdentifier", "win-x64");
project.SetProperty("SelfContained", "true");
project.SetProperty("PublishSingleFile", "true"); // 可选:生成单文件

// 执行发布构建
var buildParams = new BuildParameters(project.ProjectCollection)
{
    Loggers = new[] { new ConsoleLogger(LoggerVerbosity.Normal) }
};

var buildRequest = new BuildRequestData(project.CreateProjectInstance(), new[] { "Publish" });
var buildResult = BuildManager.DefaultBuildManager.Build(buildParams, buildRequest);

Console.WriteLine(buildResult.OverallResult == BuildResultCode.Success ? "发布完成" : "发布失败");

方法三:调用MSBuild命令行(兼容.NET Framework项目)

针对传统.NET Framework的Windows应用,可直接调用msbuild命令完成发布:

示例命令(可通过Process在代码中执行):

msbuild "D:\Projects\NetFxApp\NetFxApp.csproj" /t:Publish /p:Configuration=Release /p:PublishDir=D:\Publish\NetFxApp /p:Platform=x64

注意事项

  • 确保系统环境变量中能找到dotnet或msbuild,或在代码中指定完整路径(如C:\Program Files\dotnet\dotnet.exe)
  • 根据项目类型(WPF/WinForms/MAUI等)调整参数,比如MAUI项目需额外指定TargetFramework
  • 可添加/p:TrimMode=Full参数启用程序集裁剪,减少发布包体积

内容的提问来源于stack exchange,提问作者Bhuvanesh cool

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 22:05:29