如何让.exe生成.exe程序

wxz280973534 2008-12-27 12:59:47
比如我现在用C#写了一个程序编译后生成1.exe现在想实现一个功能,就是当我点这个1.exe程序的时候,让1.exe生成一个名叫2.exe的程序
1.exe和2.exe程序没有任何关系,
比如1.exe的功能只是MessageBox.Show("Hello");
而2.exe要实现可能是别的System.IO.File.Exists(filePath);
请问这个1.exe要如何写
...全文
335 30 打赏 收藏 转发到动态 举报
写回复
用AI写文章
30 条回复
切换为时间正序
请发表友善的回复…
发表回复
prj123328 2009-03-24
  • 打赏
  • 举报
回复
如果要编译GUI应用程序,需要如何修改了?
linamong 2009-01-01
  • 打赏
  • 举报
回复
17楼的 学习了.
其实我觉得 实用中 捆绑可能更实惠简单
空心兜兜 2008-12-27
  • 打赏
  • 举报
回复
关注下
格拉 2008-12-27
  • 打赏
  • 举报
回复
有点像病毒啊
wxz280973534 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ChrisAK 的回复:]
.net framework提供了对编译器的访问的api
在没有装第三方编译器的情况下你可以直接调用
它编译C# VB.net JS.net的代码生成exe.另外
如果你熟悉编译原理和.net il的话,完全可以在
.net的生成动态程序集的库的帮助下弄出自己的一
个编译器生成自己的exe.
当然,最简单的方法就是把2.exe捆绑到1.exe的后
面.然后1.exe在需要的时候读自己的文件把2.exe
释放到硬盘上.
[/Quote]
比如我现在在1.exe中填写一个路径,想要生成的2.exe中那个路径就是1.exe中填写的?
捆绑2.exe的话,2.exe就是死的了,改变不了
wxz280973534 2008-12-27
  • 打赏
  • 举报
回复
貌似有点复杂,我去试试
net5i 2008-12-27
  • 打赏
  • 举报
回复
也就是这样调用的:
//源代码字符串(最好从文件中读取)
string source = "using System;" +
"using System.Windows.Forms;" +
"namespace App2" +
"{" +
" public class MainForm : Form" +
" {" +
" static void Main(string[] args)" +
" {" +
" " +
" }" +
" }" +
"}";

//初始化C#编译器
Microsoft.CSharp.CSharpCodeProvider CScodeProvider = new Microsoft.CSharp.CSharpCodeProvider();
System.CodeDom.Compiler.ICodeCompiler icodeCompiler = CScodeProvider.CreateCompiler();

//设置C#编译器编译参数
System.CodeDom.Compiler.CompilerParameters compilerParameters = new System.CodeDom.Compiler.CompilerParameters();
compilerParameters.GenerateInMemory = false; //生成文件
compilerParameters.GenerateExecutable = true; //生成可执行文件
compilerParameters.ReferencedAssemblies.Add("System.dll"); //添加程序集引用
compilerParameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
compilerParameters.ReferencedAssemblies.Add("System.Drawing.dll");
compilerParameters.OutputAssembly = Application.StartupPath + "\\2.exe"; //指定输出文件

//开始使用这个参数,对脚本代码进行编译
System.CodeDom.Compiler.CompilerResults compilerResults = icodeCompiler.CompileAssemblyFromSource(compilerParameters, source);

//如果编译出错,那么出错信息就在compilerResults变量内

当然楼主也可以直接使用Process类调用C#编译器csc.exe来直接对source进行编译,但相对来说上面更直观一些
net5i 2008-12-27
  • 打赏
  • 举报
回复
很简单的,.NET已经封装了.NET语言编译器,楼主可以直接调用
也就是说1.exe运行的时候,执行一段脚本就可以生成新的exe
adrianEvin 2008-12-27
  • 打赏
  • 举报
回复
1.exe 生成后 通过1.exe实现2.exe里面的功能再生成2.exe?
龙宜坡 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 sijin 的回复:]
路过学习
没做过
[/Quote]!
sijin 2008-12-27
  • 打赏
  • 举报
回复
路过学习
没做过
jxxx2967 2008-12-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 ChrisAK 的回复:]
当然,最简单的方法就是把2.exe捆绑到1.exe的后
面.然后1.exe在需要的时候读自己的文件把2.exe
释放到硬盘上.
[/Quote]

没太确切理解楼主的意思,2.exe的源是什么,是C#源代码,在C++源代码,还是本其它描述语言。
如果这些都不是,只是1.exe里的资源的话,那如2楼所说的,直接释放出来就可以了。
C_sdnElf 2008-12-27
  • 打赏
  • 举报
回复
up
byte377 2008-12-27
  • 打赏
  • 举报
回复
用新线程的方法 具体的自己查下就知道
byte377 2008-12-27
  • 打赏
  • 举报
回复
用新线程的方法
by1900 2008-12-27
  • 打赏
  • 举报
回复
利用安装生成软件(列入InstallShield)来打包,然后指定运行1.exe
GTX280 2008-12-27
  • 打赏
  • 举报
回复
最容易的做法是捆绑,调用编译器API编译生成自己的exe要求太高了些
hernmmy 2008-12-27
  • 打赏
  • 举报
回复
关注,学习
Joschime 2008-12-27
  • 打赏
  • 举报
回复
关注,学习
superauu 2008-12-27
  • 打赏
  • 举报
回复
通常做法是先做好1.exe和2.exe,这里2.exe要求比较高,需要能通过不同的参数等信息实现各种不同的功能。然后把2.exe改名比如2.dat。
用1.exe编译2.exe的过程就是把2.dat改名成2.exe,并把编译相关的参数加到2.exe后面(用2进制写进去,这样并不会破坏2.exe)然后2.exe执行时先去读自己最后的参数信息,然后实现不同功能,不知道说明白没。这类软件很多,比如做课件的,叫什么忘了。
加载更多回复(10)

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧