Компилятор C # и Windows.Forms - PullRequest
0 голосов
/ 17 апреля 2010

Я только что создал небольшое приложение, которое программно компилирует код с использованием компилятора C #, и оно работает великолепно. Но мне нужно сделать одну вещь - скомпилировать код Windows.Forms. Мол, я могу создать консольное приложение с ним, но я не могу создать форму на основе графического интерфейса. Вот ссылка, с которой я начал:

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");
        }
    }
}

Приведенный выше код - это то, что я ввожу в свое приложение. И когда я пытаюсь скомпилировать этот код, мое приложение выдает мне массу ошибок и не выдает исполняемый файл (очевидно). Но мое приложение всегда успешно компилирует прямые консольные приложения ...

Ответы [ 3 ]

3 голосов
/ 19 сентября 2010

У вас та же проблема, что и я.

Все, что вам нужно сделать, это указать компилятору компилировать программу как winexe. Для этого просто добавьте это в свой CompilerParams:

CompilerParams.CompilerOptions = "/target:winexe";

Но также обратите внимание, что это скомпилирует его со значком по умолчанию (который выглядит ужасно!), Поэтому вам нужно будет добавить к этому дополнительные аргументы:

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

Таким образом, он проверяет, существует ли значок, прежде чем пытаться вставить его, чтобы избавить вас от неприятностей, которые мне пришлось пережить ....

1 голос
/ 17 апреля 2010

Вам необходимо включить и Form1.cs, и Form1.Designer.cs, чтобы полностью скомпилировать его. Конечно, вы должны включить ссылки на формы и любое другое необходимое пространство имен.

1 голос
/ 17 апреля 2010

Вам просто нужно добавить сборки System, System.Drawing и System.Windows.Forms в качестве ссылок при компиляции

...