c# - 从命令行使用 .net 构建 WPF 应用程序

标签 c# .net wpf msbuild nuget

我想学习使用 C# 构建工具从命令行构建桌面应用程序。 我刚刚从here下载了.Net SDK 并按照 here 的教程成功运行我的第一个控制台应用程序 但是,如果我想构建一个 wpf 应用程序,它会说类型或命名空间“System.Windows”不可用,并且可能缺少对程序集的引用。 我的项目文件如下所示

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

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>

</Project>

我的 C# 文件如下所示:

using System;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Ink;

public class Sketchpad : Application {

    [STAThread]
    public static void Main(){
        var app = new Sketchpad();
        Window root = new Window();
        InkCanvas inkCanvas1 = new InkCanvas();

        root.Title = "Skortchpard";

        root.ResizeMode = ResizeMode.CanResizeWithGrip;
        inkCanvas1.Background = Brushes.DarkSlateBlue;
        inkCanvas1.DefaultDrawingAttributes.Color = Colors.SpringGreen;
        inkCanvas1.DefaultDrawingAttributes.Height = 10;
        inkCanvas1.DefaultDrawingAttributes.Width = 10;

        root.Content = inkCanvas1;
        root.Show();
        app.MainWindow = root;
        app.Run();
    }

}

我需要如何更改项目文件以包含必要的程序集? 对于 Windows 窗体应用程序来说会怎么样? 为了从控制台编译 C# 程序,您应该阅读什么教程?

最佳答案

您需要添加该行

<UseWPF>True</UseWPF>

<PropertyGroup>内的任意位置.csproj 文件的部分。这(隐式)添加了 System.Windows对您的项目的引用。 (因此,这是一种特殊情况,因为大多数其他外部引用将通过 <ProjectReference> 条目添加)。

哦,还有改变

 <TargetFramework>net7.0</TargetFramework>

 <TargetFramework>net7.0-windows</TargetFramework>

因为 WPF 是特定于 Windows 的。

关于c# - 从命令行使用 .net 构建 WPF 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75439874/

相关文章:

wpf - PRISM/Unity IDisposable

c# - 如何为派生类实现 INotifyPropertyChanged?

c# - 在 Unity 中向鼠标位置发射炮弹

c# - 双引号内的双引号

c# - c#中逐字字符串的多行格式(前缀为@)

c# - 从 char 到单字符串的隐式转换

c# - 如何在 dataGrid Cell 工具提示上设置多重绑定(bind)?

c# - SQL返回列中具有最大值的行,在特定范围内

c# - 多个账户到一个网站申请

.net - 通过 NpgsqlDataAdapter 的 NpgsqlCommand