【问题标题】:How to render window xaml in C# without Visual Studio?如何在没有 Visual Studio 的情况下在 C# 中呈现窗口 xaml?
【发布时间】:2019-05-12 02:03:04
【问题描述】:

我想从命令提示符运行并显示 XAML GUI。

我遵循的步骤是编写 CS 代码并通过命令行对其进行编译,但我最终遇到了处理 InitializeComponent 的错误,因为它不在上下文中,即使我知道我有窗口 system.window.form 并且那不是足够恰当,或者与 GUI 组件有任何关系。

下面的代码只是我复制和粘贴的许多代码,只是出错了。我没有 Visual Studio。我不需要它来编译我的 CS 代码,window 带有 csc.exe 命令来编译 c# 代码。我的问题是围绕正在使用的 XAML,它是 Windows 中的 C# 附带的,还是完全独立的? Windows 不是也自带 XAML 和表单 GUI 吗?

没有其他问题能与我的问题相提并论。但是您可以在 Stack Exchange 上找到许多显示 Windows 带有 C# 编译器的答案。请不要指出 Visual Studio。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.Text = "Change Prperties Through Coding";
            this.BackColor = Color.Brown;
            this.Size = new Size(350, 125);
            this.Location = new Point(300, 300);
            this.MaximizeBox = false;
        }
    }
}

更新

在回复可能的重复时,有人指出 Windows 确实带有自己的 C# 编译器,但这与我的问题无关。

【问题讨论】:

  • 您的示例是 Windows 窗体而不是 WPF。 XAML 用于 WPF...在 WPF 中,您的窗口通常会从 Window 继承,InitializeComponent 通常是 VisuaStudio 在单独的隐藏文件或设计器生成的文件上生成的函数。我没有看到您的示例中存在该功能;你叫它,但它在哪里定义?我认为您需要先阅读几本关于 C#、WPF、Windows 窗体的书籍
  • @Darkonekt 你在说什么?在这里听,xaml,wpf,uwp,或者它叫什么或者它的变体,我只想渲染它。你指出视觉工作室,你表现得好像我在发帖之前没有做自己的搜索。你认为我喜欢冒失去在这里提问的权利的风险吗?有一种了解 xaml 元素和使用它的方法的基调,但我找不到的是如何访问它或在哪里下载它或窗口是否附带它。如果您是此处的模组,请删除此问题或给出答案而不是建议。
  • 你把事情搞混了......不,你没有做适当的研究......你想编译 xaml 但你展示了一个 Windows 窗体的例子......那么你不想要谈论Visual Studio,但显然你从一个用于Visual Studio的示例中复制了该代码......对InitializeComponent的调用告诉我你没有做你的研究......因为InitializeComponent不是它生成的Form类的一部分视觉工作室!所以你问 xaml 但显示 windows 表单代码?你说不谈论视觉工作室,但你展示视觉工作室代码.....?
  • 回答您的问题 Windows 窗体,WPF 是 .NET 框架的一部分。 Windows 也随之而来。根据您安装的 Windows 版本,您将获得不同版本的 .NET。如果需要,您可以下载并安装较新版本的 .NET。这就是所有这些库的所在......它们是 .NET 的一部分
  • 在收到答复后,不允许大幅更改您的问题。欢迎您提出澄清,即使是那些解释为什么答案不适用的人,但您的上一次修订是不可接受的,因为它把问题变成了完全不同的东西。此外,不要在关于投票、删除等的元评论中进行编辑。这不属于问题。发布到本网站的任何内容都将获得 CC BY-SA 的许可,授予 Stack Overflow 以他们的意愿展示它的永久权利,前提是他们将其归属于您。

标签: c# xaml


【解决方案1】:

您是正确的,您可以在没有 Visual Studio 的情况下构建 C# 和其他 .NET 代码。 csc.exe 是 Microsoft C# 编译器,可用于此目的。在我的电脑上,csc.exe 位于此处:

C:\Windows\Microsoft.NET\Framework\v4.0.30319  

您的计算机可能在不同的文件夹中。

至于代码,如果这是您拥有的唯一文件,您最终会遇到一些错误。

  • 没有入口点。通常这是在 Program.cs 中。
  • 您的课程依赖于 System.Windows.Forms。但是,您需要某种方式来添加引用。通常这是通过项目文件完成的。也可以在调用 csc 时直接添加引用。但是,在多次引用之后,这变得很麻烦。

【讨论】:

  • 问题是它甚至看起来根本不存在。例如尝试使用InitializeComponent 的错误将导致“上下文中不存在”。所以这让我觉得 c# 没有开箱即用的这个特性。但是 window 确实包括开箱即用的 cpc 编译器。所以我想一个答案来自可以说“不,它不会出现在 xaml 的盒子里,你必须下载它”并给我一个下载链接。作为用户,投反对票对我的影响很大,所以再投一次反对票,我将删除我的帖子,这样我就不会受到它的严重影响。
  • @L2L2L:请将该错误信息编辑到您的问题中,这可能对一般读者有用。如果有与之相关的堆栈跟踪,请也添加。
  • 嘿@DougJohnson (@Doug Johnson) 你谈到了用 csc 添加引用。愿意举一些例子吗?关于从何处获取 System.Windows.Forms 以及如何将其添加为参考以用作构建工具。要说它变得麻烦就是看不起将其作为唯一方法的通行证,依靠Visual Studio之类的工具也可以削弱一个……我宁愿在操作系统之外尽可能少地依赖Microsoft工具。无论如何,如果您可以补充我所要求的答案,这将对我和其他人有所帮助。
  • 当然,您可以使用 /r 开关从 csc.exe 引用 DLL。如果您需要引用多个 DLL,请用分号分隔它们。这是一个示例: csc.exe Program.cs /r:System.Windows.Forms.dll
【解决方案2】:

部分你不能没有 Visual Studio 或 Visual Studio 社区版本。 WPF 被添加到 .net 核心,但我不知道这是否意味着它仍然完全需要视觉工作室。所有涉及 xaml、wpf、uwp 或此工具的任何其他变体的信息都在使用 Visual Studio 呈现它。这个工具是一个在窗口应用程序中使用的 gui 框架,它改进了仍在使用但称为 WinForms 的旧框架。

【讨论】:

    猜你喜欢
    • 2015-10-22
    • 1970-01-01
    • 2018-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多