以下这段代码已经把一个embeded resource代码文件(Test.cs)编译成一个aa.exe文件,现在,我在硬盘上还有一个数据文件data.xml,如何把这个数据文件作为embeded resource编译进aa.exe中。高手指点一下吧。Assembly assembly = Assembly.GetExecutingAssembly();//code compiler and provider
ICodeCompiler cc = new CSharpCodeProvider().CreateCompiler();//compiler parameters
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll"); //includes
cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");cp.GenerateExecutable = true; //generate executable
cp.OutputAssembly = "aa.exe";Stream stream = assembly.GetManifestResourceStream(assembly.GetManifestResourceNames()[0]);MemoryStream ms = new MemoryStream();byte[] data = null;
using (ms)
{
byte[] bt;
using (stream)
{
while (true)
{
bt = new byte[1024];
int cnt = stream.Read(bt, 0, 1024);
ms.Write(bt,0,cnt);
if (cnt == 0)
break;
}
}
data = new byte[ms.Length];
data = ms.ToArray();
}//run the compiler
string content = Encoding.ASCII.GetString(data);
CompilerResults cr = cc.CompileAssemblyFromSource(cp, content);//check for compilation errors...
if(cr.Errors.HasErrors)
{
StringBuilder error = new StringBuilder();
error.Append("Error Compiling Expression: ");
foreach (CompilerError err in cr.Errors)
{
error.AppendFormat("{0}\n", err.ErrorText);
}
throw new Exception("Error Compiling Expression: " + error.ToString());
}}
ICodeCompiler cc = new CSharpCodeProvider().CreateCompiler();//compiler parameters
CompilerParameters cp = new CompilerParameters();
cp.ReferencedAssemblies.Add("System.dll"); //includes
cp.ReferencedAssemblies.Add("System.Windows.Forms.dll");cp.GenerateExecutable = true; //generate executable
cp.OutputAssembly = "aa.exe";Stream stream = assembly.GetManifestResourceStream(assembly.GetManifestResourceNames()[0]);MemoryStream ms = new MemoryStream();byte[] data = null;
using (ms)
{
byte[] bt;
using (stream)
{
while (true)
{
bt = new byte[1024];
int cnt = stream.Read(bt, 0, 1024);
ms.Write(bt,0,cnt);
if (cnt == 0)
break;
}
}
data = new byte[ms.Length];
data = ms.ToArray();
}//run the compiler
string content = Encoding.ASCII.GetString(data);
CompilerResults cr = cc.CompileAssemblyFromSource(cp, content);//check for compilation errors...
if(cr.Errors.HasErrors)
{
StringBuilder error = new StringBuilder();
error.Append("Error Compiling Expression: ");
foreach (CompilerError err in cr.Errors)
{
error.AppendFormat("{0}\n", err.ErrorText);
}
throw new Exception("Error Compiling Expression: " + error.ToString());
}}
解决方案 »
- log4net插入到数据库---log4net.config里执行数据库操作
- 几个关于C# 的简单问题
- 以前C#程序写好后 客户端电脑我都安装了SQL2000的仅连接 后来发现有的电脑没安装也能正常连接数据库 是不是本来就不用安装呀?
- 帮忙把代码注释下
- 问个XPath问题
- 问一个关于投票的简单问题
- 在datagrid中动态添加的text控件,为什么在在后台找不到?
- 怎样才能判断我的电脑当前是否连接上网? 马上结贴知道的快来!!!!
- DataGridView_CellEndEdit编辑事件无法更新到预定单元格!
- 听说J#很难,不如学C#,哪位给小弟指点一下
- 关于一个继承的问题
- WEB访问或者是IIS问题???
没人能够回答,只能通过VS重新编译了!
ms-help://MS.VSCC.2003/MS.MSDNQTR.2003APR.1033/cscomp/html/vcrefresattachresourcefiletooutput.htm
现在问题描述成这样,可以实现吗?就是如何动态地把一个cs源文件和一个数据文件(置成embeded resource类型的)编译成一个exe文件???
Process.Start( "csc", "/resource:rf.resource in.cs" );不过可能需要使用csc以及各个文件的完整路径罢了。
https://www.microsoft.co.ke/china/MSDN/library/architecture/MetaDriveUI.mspx?mfr=true
options.EmbeddedResources.Add("data.xml");
http://www.rainsts.net/article.asp?id=265