С Новым годом! Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1

Компиляция WinForms приложения на лету. Некомпилится, причина не понятна.

09.01.2011, 02:06. Показов 3001. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот пытаюсь откомпилировать WindowsForms приложение. Не компилируется, выдаёт ошибки:

C#
1
2
3
Количество ошибок: 2
Ошибка: Имя типа или пространства имен 'Windows' отсутствует в пространстве имен 'System' (пропущена ссылка на сборку?)
Ошибка: Не удалось найти имя типа или пространства имен 'Form' (возможно, пропущена используемая директива или ссылка на сборку)
Помогите пожалуйста найти проблему.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.CSharp;
using System.CodeDom.Compiler;
using System.IO;
using System.Reflection;
 
namespace ConsApp_Компиляция_на_лету
{
    class Program
    {
        static void Main(string[] args)
        {
            // Source code для компиляции 
            string source =
            @"
using System;
using System.Windows.Forms;
using System.Text;
namespace TestProgram 
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
 
    public class Form1 : Form
    {
        public Form1()
        {
        }
    }
}
            ";
 
            // Настройки компиляции 
            Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                { 
                    {"CompilerVersion", "v3.5"} 
                };
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
 
            String outputPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
            String outputAssembly = Path.Combine(outputPath, "Test.exe");
 
            CompilerParameters compilerParams = new CompilerParameters();
            compilerParams.OutputAssembly = outputAssembly;
            compilerParams.GenerateExecutable = true ;
            compilerParams.CompilerOptions = "/optimize /target:winexe";
            compilerParams.IncludeDebugInformation = false;
            String[] embeddedResources = new String[] 
            {
                "System.dll", "System.Windows.Forms.dll"
            };
            compilerParams.EmbeddedResources.AddRange(embeddedResources);
            //compilerParams.MainClass = "TestProgram.Program";
 
            Console.WriteLine("Нажмите любую клавишу, для компиляции проекта по пути: {0}", outputAssembly);
            Console.ReadKey();
 
            // Компиляция 
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
 
            // Выводим информацию об ошибках 
            String errorQuantity = String.Format("\nКоличество ошибок: {0}", results.Errors.Count);
            Console.WriteLine(errorQuantity);
 
            StreamWriter str = new StreamWriter(Path.Combine(outputPath, "ErrorReport.txt"), false, Encoding.UTF8);
            str.WriteLine(errorQuantity);
 
            foreach (CompilerError err in results.Errors)
            {
                String errorText = String.Format("Ошибка: {0}", err.ErrorText);
                Console.WriteLine(errorText);
                str.WriteLine(errorText);
                str.Flush();
            }
            
            str.Close();
            Console.ReadKey();
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.01.2011, 02:06
Ответы с готовыми решениями:

не понятна причина ошибки
Добрый вечер. Осваиваю куки(этим объясняется последующий жуткий код). Делаю следующее-на html страничку подключаю php файл, который...

Не понятна причина ошибки
Есть задание : Написать программу, которая осуществляет добавление строки или столбца в любое место двумерной матрицы по выбору...

Не понятна причина сбоев копирования и доступа
Система: i5, 8Gb, SSD 128Gb, Win 7, Home64 SP1, Norton360, используется уже более 2 лет. SSD содержит 4 раздела: С и 3 раздела с архивами....

3
20 / 20 / 2
Регистрация: 27.08.2009
Сообщений: 71
09.01.2011, 02:23
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using Microsoft.CSharp;
using System.IO;
using System.CodeDom.Compiler;
using System.Reflection;
 
namespace WindowsFormsApplication1
{
    static class Program
    {
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        /// 
 
        public static string source =
@"
        
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Threading;
 
namespace test
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
 
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
 
    partial class Form1
    {
        private System.ComponentModel.IContainer components = null;
        protected override void Dispose(bool disposing)
        {
            if (disposing && (components != null))
            {
                components.Dispose();
            }
            base.Dispose(disposing);
        }
 
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.Text = ""Form1"";
        }
 
    }
}
";
        [STAThread]
        static void Main()
        {
            // Настройки компиляции 
            Dictionary<string, string> providerOptions = new Dictionary<string, string> 
                        { 
                            {"CompilerVersion", "v2.0"} 
                        };
 
            CSharpCodeProvider provider = new CSharpCodeProvider(providerOptions);
 
            String path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "test.exe");
 
            CompilerParameters compilerParams = new CompilerParameters
            {
                OutputAssembly = path,
                GenerateExecutable = true
            };
 
            compilerParams.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            compilerParams.ReferencedAssemblies.Add("System.dll");
            compilerParams.CompilerOptions = "/target:winexe";
            //compilerParams.MainClass = "TestProgram.Program";
 
            // Компиляция 
            CompilerResults results = provider.CompileAssemblyFromSource(compilerParams, source);
 
            // Выводим информацию об ошибках 
            MessageBox.Show("Number of Errors: " + results.Errors.Count);
 
            foreach (CompilerError err in results.Errors)
            {
                MessageBox.Show("ERROR " + err.ErrorText);
            }
        }
    }
}
1
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8725 / 3677 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
09.01.2011, 02:25
Casper-SC, мне кажется твоя проблема в EmbeddedResources - ты что решил dll в ресурсы добавить, а толку Предполагаю что тебе нужны были ссылки на эти dll, тогда тебе нужно CompilerParameters.ReferencedAssemblies.

Добавлено через 56 секунд

Не по теме:

dampir, опередил :)

Хотя если бы ты хотел, ты бы поискал по форуму, таких вопросов было уже дофига, ну и решений тоже примерно столько же
1
Эксперт .NET
 Аватар для Casper-SC
4434 / 2094 / 404
Регистрация: 27.03.2010
Сообщений: 5,657
Записей в блоге: 1
09.01.2011, 02:58  [ТС]
Цитата Сообщение от SSTREGG Посмотреть сообщение
Casper-SC
Хотя если бы ты хотел, ты бы поискал по форуму, таких вопросов было уже дофига, ну и решений тоже примерно столько же
Я искал. Только я что-то не нашёл того, что мне было нужно. Тем километр я в курсе.

Не заметил, что в ресурсы добавляю =). Быстро писал. Теперь всё работает. Даже не верится, что всё так просто. Можно свой мини редактор забабахать и у кого угодно прогу написать на компьютере. Так как Framework'и практически везде есть. По крайней мере 2.0 уж точно.
Спасибо.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.01.2011, 02:58
Помогаю со студенческими работами здесь

Компиляция на лету
Я знаю, что в System.Reflection.Emit есть классы для компиляции C# кода и т.д., но в MSDN ни слова!!! как это чудо юзать?

Компиляция препроцессоров на лету
Можно ли less либо saas компилировать на лету? Если подключить пустой файл css к странице, а код писать в препроцессорном файле, из...

Компиляция regex на лету
Есть строки Для поиска нужной строки пользователь вводит 5*B Далее код: string first = param.RemoveRightPart(&quot;*&quot;); ...

Не понятна причина предупреждения "temporary used for parameter"
Всем здравствуйте. Используем функцию: void Swap(int&amp; A, int&amp; B) { int tmp; tmp = A; A = B; ...

[python2] Компиляция "на лету". Как сохранить байт-код в файл?
#!/usr/bin/env python2 text = '''\ def get42(): return 42 ''' code = compile(text, '&lt;string&gt;', 'exec') ns = {} exec...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru