C#编译器和Windows.Forms

时间:2010-04-17 18:53:09

标签: c# .net winforms compiler-construction codedom

我刚刚创建了一个使用C#编译器以编程方式编译代码的小应用程序,它的工作非常出色。但是,我需要它做的一件事是编译Windows.Forms代码。就像,我可以用它创建一个控制台应用程序,但我无法创建基于GUI的表单。这是让我开始的链接:

http://support.microsoft.com/kb/304655

有人可以帮忙吗?

谢谢:)

更新

using System;
using System.Collections;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Diagnostics;
using System.Drawing.Design;
using System.Windows.Forms;
using System.Windows.Forms.Design;

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

        private void Form1_Load(object sender, EventArgs e)
        {
            MessageBox.Show("hi jason");
        }
    }
}

上面的代码是我在我的应用程序中输入的代码。当我尝试编译这段代码时,我的应用程序给了我很多错误,并且不会产生exe(显然)。但是,我的应用程序总能成功编译直接的控制台应用程序......

3 个答案:

答案 0 :(得分:3)

你遇到了同样的问题。

您需要做的就是告诉编译器将程序编译为winexe。为此,只需将其添加到CompilerParams:

CompilerParams.CompilerOptions = "/target:winexe";

但是请注意,这将使用默认图标(看起来很糟糕!)进行编译,因此您需要添加其他参数:

if (File.Exists(iconPath))
    CompilerParams.CompilerOptions = "/target:winexe" + " " + "/win32icon:" + "\"" + iConPath + "\"";
else
    CompilerParams.CompilerOptions = "/target:winexe";

通过这种方式,它会在尝试插入之前检查图标是否存在,为您节省一些我必须经历的麻烦....

答案 1 :(得分:1)

编译时只需添加SystemSystem.DrawingSystem.Windows.Forms程序集作为参考

答案 2 :(得分:1)

您需要包含Form1.cs和Form1.Designer.cs才能完全编译它。当然,您还必须包含对Forms和任何其他所需命名空间的引用。