Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
1

Как собрать статическую линковку ILMerge?

31.12.2014, 18:34. Показов 1445. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
C# Скинте как собрать статистическую линковку ILMerge

смотрел видео https://www.youtube.com/watch?v=wNIKhWaJ9Mo

понял так вот такой кодик набросал
он та правильны - проблема в сборке самой, а не в этом коде

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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Windows.Forms;
using System.Diagnostics;
using System.Windows.Forms.VisualStyles;
 
namespace ILmerge_compile_bat
{
    class Program
    {
        static void Main(string[] args)
        {
            FileInfo f = new FileInfo("ILMerge.exe");
            string file_bat_compil = "bat_compil_all_file.bat"; 
            int exit = 1;
 
            do
            {
            if (f.Exists==true)
            {
                int a = 0;
                string envirom = Environment.CurrentDirectory, bat_sum = "", output = "", bat_all = "";
                Console.BackgroundColor = ConsoleColor.DarkCyan;
                Console.Clear();
                Console.ForegroundColor = ConsoleColor.White;
                Console.Title = "Compile ILMerge to all exe";
                Console.WriteLine("Введите число склееных файлов: ");
                try
                {
                    a = Convert.ToInt32(Console.ReadLine());
                }
                catch (Exception ex)
                {
                    
                    MessageBox.Show(ex.Message,"ОШИБКА",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    Environment.Exit(0); 
                }
                
 
                string[] infos = new string[a];
 
                for (int i = 0; i < a; i++)
                {
                    Console.WriteLine("Введите " + (i + 1) + " имя файла склейки");
                    infos[i] = Console.ReadLine();
 
                    bat_all += infos[i] + " ";
 
                    FileInfo[] fi = new FileInfo[a];
                    fi[i] = new FileInfo(infos[i]);
                    if (fi[i].Exists==false)
                    {
                        MessageBox.Show("Такого файла нету: " + fi[i].Name, "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        Environment.Exit(0); 
                    }
                   
                }
 
                Console.WriteLine("Введите выходной вайл склейки: ");
                output = Console.ReadLine();
 
                bat_sum = envirom + "\\"+f.Name + " /target:winexe /out:" + output + " " + bat_all;
                write(file_bat_compil, bat_sum);
                Console.WriteLine("BAT файл создан, для склейки в exe");
                process_bat2(true,file_bat_compil,3);
                MessageBox.Show("Статистическая линковка закончина\n" + "Выходной файл bat: " + output, "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                
                Console.ReadKey(true);
            }
            else
            {
                MessageBox.Show("Нету файла для статистической линковки: "+f.Name, "ОШИБКА",MessageBoxButtons.OK,MessageBoxIcon.Error);
                Environment.Exit(0); 
            }
            } while (exit>0);
        }
 
        static void write(string file_name,string info)
        {
            StreamWriter bat_writ = new StreamWriter(file_name,false,Encoding.GetEncoding(866));
            bat_writ.WriteLine("@ echo off");
            //bat_writ.WriteLine("color 3f");
            bat_writ.WriteLine("title Compile ILMerge");
            bat_writ.WriteLine(info);
            bat_writ.WriteLine("pause");
            bat_writ.Close();
        }
 
        static void process_bat(bool flag, string command, int form_vis)
        {
            if (flag==true)
            {
            Process pro_bat=new Process();
            pro_bat.StartInfo.CreateNoWindow = false;
            pro_bat.StartInfo.FileName = "cmd.exe";
            pro_bat.StartInfo.Arguments = "/c ";
            switch (form_vis)
            {
                case 1:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
                    break;
                case 2:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
                    break;
                case 3:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                    break;
                case 4:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
                    break;
                default:
                    MessageBox.Show("В не области вывода запуска формы", "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
 
            }
            pro_bat.Start();
            pro_bat.Close();
            }
        }
 
        static void process_bat2(bool flag,string file_bat,int form_vis)
        {
            if (flag==true)
            {
            Process pro_bat = new Process();
            pro_bat.StartInfo.CreateNoWindow = false;
            pro_bat.StartInfo.FileName = file_bat;
            //pro_bat.StartInfo.Arguments = "/c ";
            switch (form_vis)
             {
                case 1:
                     pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;  
                    break;
                case 2:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Minimized;
                    break;
                case 3:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Normal;
                    break;
                case 4:
                    pro_bat.StartInfo.WindowStyle = ProcessWindowStyle.Maximized;
                    break;
                default:
                     MessageBox.Show("В не области вывода запуска формы", "ОШИБКА", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    break;
                      
              }
            
            pro_bat.Start();
            pro_bat.Close();
            }
        }
    }
}
Но что то начал собирать в одну екзешку

System.Xml.dll
System.Data.dll
System.dll
ConsoleApplication1.exe

в одну екзкшку
Console.exe

не вышло ни чего
вот фото

может я не правильно понял нужно создать один проект
где будет библиотека с зависимостями NET Framework + и екзешка без фраймеворка но зависима от этой библиотеки
но все равно это не решает проблему статистической линковки
ведь как требывало это наличие NET Framework установленого на ПК , так и требует
А мне надо екзешку без зависимости NET Framework
одна екзешка в которая запускается без установленого NET Framework на ПК

может ILMerge решит это
подскажите пожалуйста мощные
Миниатюры
Как собрать статическую линковку ILMerge?  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.12.2014, 18:34
Ответы с готовыми решениями:

Как пользоваться ILMerge?
Недавно скачал утилиту ILMerge. Хотел её использовать для объединения сборок, но никак не могу с...

ILMerge вылетает с ошибкой
Написал программу, использующую пару библиотек из Nuget. В итоге в папке Debug получились файлы...

Как выполнить статическую линковку в cmake?
Всем привет. Пробую собрать проект с помощью cmake (3.0) на ubuntu. Мне надо, чтобы зависимости...

Как выполнить статическую линковку библиотек?
Такая ситуация: скомпилировал на ноуте консольное приложение, на уровне хеллоу ворлда, а на...

7
Эксперт HardwareЭксперт Windows
21304 / 12114 / 653
Регистрация: 11.04.2010
Сообщений: 53,466
01.01.2015, 13:07 2
хорошо отметили, раз разделом промазали
0
458 / 402 / 153
Регистрация: 23.01.2011
Сообщений: 1,054
01.01.2015, 14:55 3
Вы от NET framework никак не отвяжитесь. Это сделать не возможно.
0
Эксперт .NET
5534 / 4298 / 1217
Регистрация: 12.10.2013
Сообщений: 12,332
Записей в блоге: 2
01.01.2015, 15:12 4
Цитата Сообщение от GENDALF_ISTARI Посмотреть сообщение
А мне надо екзешку без зависимости NET Framework
Значит не мучайте .NET и переходите на тот язык, который для этого предназначен. С++, к примеру.
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
01.01.2015, 18:01  [ТС] 5
Спасибо
Подскажите какой редактор лучше в С++
1) Visual studio - win32 , MFC
2) QT
3) Dewelop wxdevcpp C++ full
4) IDE NetBeans С++
и проще )))

или еще знаите какие

хотя смотрите парни видел по языку C#, Утелиту Spoon Studio
она собирает в одну екзешку, и да запускается
но екзешка занимает до 48 МБ

Не подскажите есть аналог этой проги - но сборка лучше

И вопрос по Xmarin он же mono - можно хоть там собрать екзешку без фраймворка
или я не отделаюсь все равно от него
0
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
01.01.2015, 19:07 6
она собирает в одну екзешку, и да запускается
а смысл? будет exe файл на 250мб, который не факт что вообще заработает если сложней hello world
1
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
01.01.2015, 19:07 7
https://www.youtube.com/user/h... ive/videos
vs + emacs
1
16 / 33 / 19
Регистрация: 20.08.2013
Сообщений: 740
01.01.2015, 23:49  [ТС] 8
А это SmartAssembly
как то можно отлучить требование фраймворка все в одном
или тоже та самая ерунда требует фраймворк
0
01.01.2015, 23:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.01.2015, 23:49
Помогаю со студенческими работами здесь

Настроить Builder на статическую линковку
У меня Builder 2007, если попытаться открыть exe файл на другом пк то жалуется на отсутствие...

Не получается сделать статическую линковку своей программы в MinGW
Написал на с++ программу, скомпилировал и решил дать другу потестить. Хотел слинковать статически...

Собрать и подключить статическую библиотеку
Библиотека должна выводить в консоль локальное и доменное имя компа и пользователя. Не разберусь...

хочу хитрую линковку сделать, как сдалать
noindex - гуглу пофиг вот и встал вопрос , а как тогда ? Спасибо!


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru