还没有见过面 这样聊天的男女天天聊天说明什么么?应该对我有意思吧? 大神指点

下次自动登录
现在的位置:
& 综合 & 正文
一个极其简单的在线C#IDE例子(zz)
五一时去朋友那, 他问了个小问题, 只要写几十行就可以很好的说明问题.可偏偏机子没装VS, 只好做罢.回来后想想, 要是有个在线的C#IDE就好了.于是上网查了下相关的资料,
整出来个简单的在线C#IDE.
做这个,主要要解决两个问题, 一是如果将网页上文本框的代码编译并执行;二是如果将运行结果在网页上输出.
第一个问题不难, .NET已经有现成的C#编译类CSharpCodeProvider(或是其它语言的),再使用CompilerParameters类做为编译参数,就可以很容易的实现.
第二个问题, 举最简单情况, 就是将Console.Write方法输出的内容在网页上显示出来.这其实也很好办,只要在编译之前, 在输出语句做一个替换, 将输出的内容存到另一个地方.等运行结束后, 再从那个地方取出来就是了.
代码实现如下:
using Susing System.Collections.Gusing System.Lusing System.Tnamespace VSOnline.Framework{
/// &summary&
/// 自定义的输出类
/// &/summary&
public class Consoler
//存储所有输出
public static Dictionary&string, Consoler& Outputs { get; set; }
static Consoler()
Outputs = new Dictionary&string, Consoler&();
using Susing System.Rusing Microsoft.CSusingusing System.Collections.Gusing System.Lusing System.Wnamespace VSOnline.Framework{
/// &summary&
/// 代码执行类
/// &/summary&
public class CodeRun
/// &summary&
/// Framework版本,可选择v2.0, v3.0, v3.5
/// &/summary&
private string CompilerVersion { get; set; }
/// &summary&
/// 构造函数
/// &/summary&
/// &param name="compilerVersion"&Framework版本,可选择v2.0, v3.0, v3.5&/param&
public CodeRun(string compilerVersion)
CompilerVersion = compilerV
/// &summary&
/// 构造函数,默认为3.5版本
/// &/summary&
public CodeRun()
CompilerVersion = "v3.5";
/// &summary&
/// 动态编译并执行代码
/// &/summary&
/// &param name="code"&代码&/param&
/// &returns&返回输出内容&/returns&
public List&string& Run(string code, string id, params string[] assemblies)
Consoler.Outputs.Add(id, new Consoler());
CompilerParameters compilerParams = new CompilerParameters();
//编译器选项设置
pilerOptions = "/target:library /optimize";
//pilerOptions += @" /lib:""C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\""";
//编译时在内存输出
compilerParams.GenerateInMemory = true;
//生成调试信息
compilerParams.IncludeDebugInformation = false;
//添加相关的引用
foreach (string assembly in assemblies)
compilerParams.ReferencedAssemblies.Add(assembly);
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");
if (this.CompilerVersion == "v3.5")
compilerParams.ReferencedAssemblies.Add("System.Core.dll");
string path = "";
path = HttpContext.Current.Server.MapPath("/bin/");
compilerParams.ReferencedAssemblies.Add(path + "VSOnline.Framework.dll");
CSharpCodeProvider compiler = new CSharpCodeProvider(new Dictionary&string, string&() { { "CompilerVersion", CompilerVersion } });
code = code.Replace("Console.WriteLine", string.Format("VSOnline.Framework.Consoler.Outputs[\"{0}\"].WriteLine", id));
code = code.Replace("Console.Write", string.Format("VSOnline.Framework.Consoler.Outputs[\"{0}\"].Write", id));
CompilerResults results = pileAssemblyFromSource(compilerParams, code);
if (results.Errors.HasErrors)
foreach (CompilerError error in results.Errors)
Consoler.Outputs[id].Output.Add(error.ErrorText + "\n");
return ReturnOutput(id);
//创建程序集
Assembly asm = piledA
//获取编译后的类型
object mainClass = asm.CreateInstance("Program");
Type mainClassType = mainClass.GetType();
//输出结果
mainClassType.GetMethod("Main").Invoke(mainClass, null);
return ReturnOutput(id);
private List&string& ReturnOutput(string id)
string[] output = new string[Consoler.Outputs[id].Output.Count];
Consoler.Outputs[id].Output.CopyTo(output, 0);
Consoler.Outputs.Remove(id);
return output.ToList();
using VSOnline.Fusing Microsoft.VisualStudio.TestTools.UnitTusing System.Collections.Gusing Susing FastDev.Cusing System.Lnamespace Test{
[TestClass()]
public class CodeRunTest
[TestMethod()]
public void RunTest()
CodeRun target = new CodeRun();
string code = @"using Spublic class Program{
public static void Main()
for(int index = 1;index &= 3;index++)
Console.Write(index);
List&string& expected = new List&string&() { "1", "2", "3" };
List&string&
actual = target.Run(code, "1");
Assert.AreEqual(true, expected.SerializeEqual(actual));
actual = target.Run(code, "2");
Assert.AreEqual(true, expected.SerializeEqual(actual));
[TestMethod()]
public void Run35Test()
CodeRun target = new CodeRun();
string code = @"using Susing System.Cusing System.Collections.Gusing System.Lpublic class Program{
public static string Name { }
public static void Main()
Name = ""3"";
Console.Write(Name);
List&string&
actual = target.Run(code, "1", "System.Core.dll");
Assert.AreEqual("3", actual[0]);
然后只要搬到Web上就可以了, 截图:
完整程序下载 :
&&&&推荐文章:
【上篇】【下篇】.NET可视化对象
创建工程的时候,会创建三个文件
Form1.Designer.cs
Program.cs
当增加一个控件的时候,会在Form1.Designer.cs增加相应的代码
PictureBox
当把PictureBox拖到窗体上时,IDE会创建一个名为Form1.resx的资源文件
所有图形 音频 图标等资源都集成与其中,随着程序安装而释放
本地数据库(.sdf)
构建数据库自己看
Form1&-&ContactDBDataSet.xsd&-&ContactDB.sdf
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:198631次
积分:4865
积分:4865
排名:第5451名
原创:291篇
评论:39条
(5)(4)(9)(74)(4)(1)(12)(11)(2)(21)(4)(20)(29)(16)(1)(5)(2)(16)(47)(7)(2)(1)(6)(3)(1)服务器维护中.......
我们会尽快恢复,请稍后再试,谢谢!有多少人是用.net开发环境(IDE)做C#的,有没有IDE环境下的很好的资料和书?
有多少人是用.net开发环境(IDE)做C#的,有没有IDE环境下的很好的资料和书?
发布时间: 7:00:00
编辑:www.fx114.net
本篇文章主要介绍了"有多少人是用.net开发环境(IDE)做C#的,有没有IDE环境下的很好的资料和书?
30yuezh]",主要涉及到有多少人是用.net开发环境(IDE)做C#的,有没有IDE环境下的很好的资料和书?
30yuezh]方面的内容,对于有多少人是用.net开发环境(IDE)做C#的,有没有IDE环境下的很好的资料和书?
30yuezh]感兴趣的同学可以参考一下。
现有的书和网友的文章大都讲的不是在IDE开发环境下的情况。各位有没有什么好的资料或书能告诉我如何使用IDE的功能方便的做程序?人民邮电出版社(C#开发实践)郑小平编哪有卖的?是VS。NET(Beta2)吗?IDE?
你说的是visual&studio.net?
那应该比命令行更好用。现在的书大多数是讲命令行的。很少有完全在.NET环境下开发的实例。我们就从beta1开始使用.NET开始BS模式程序,用了快一年了吧。
至少书嘛,不少,但好的不多。正像上面说的,讲语法的多。但有一本不错,我向你们推荐Inside&C#虽然也是讲语法的,但是很有深度,大家可以看一下,是英语的噢。
另外嘛,要说好书,我看就是咱们手上的MSDN了,真的,里面什么内容都能找到,只是需要英语好一点点。
大家有什么好点子都说说吧!我用的就是ide环境。现在的书好多是b1的。好烦人。
我买的不少书。看的真是气人。我觉着.net的msdn不如以前的好。感觉有点乱。可能是因为beta版的缘故。
反正我从msdn中想找东西很难。Dylan(路德一族),你是金蝶的?久仰久仰啊!juqiang你好,我并不是金蝶的,但是我们确实从.NET的beta1就开始使用它了。谈不上了解,在CSDN众多高手面前真是班门弄斧,让您见笑了。在论坛里有说的不合适的地方还望大家斧正啊!嘿嘿。
对了,我近日在书店看到一本书不错,里面有部分IDE的内容。是wrox的,基于beta2的。叫<C#程序设计教程>
不过呢,说实话IDE只是提供了一定的方便而已,要做好程序靠的不仅仅是IDE提供的那点方便,靠的是你的真实功力。
大家共同努力吧!现在有不少好书了,多谢关注,快过年了,把分给了吧!&
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接:2011年9月 总版技术专家分月排行榜第一2011年8月 总版技术专家分月排行榜第一2011年7月 总版技术专家分月排行榜第一2011年6月 总版技术专家分月排行榜第一2011年5月 总版技术专家分月排行榜第一2011年4月 总版技术专家分月排行榜第一
2011年3月 总版技术专家分月排行榜第二2011年2月 总版技术专家分月排行榜第二
2011年4月 Java大版内专家分月排行榜第二2010年8月 Java大版内专家分月排行榜第二2010年5月 Java大版内专家分月排行榜第二2008年2月 Java大版内专家分月排行榜第二2007年7月 Java大版内专家分月排行榜第二
2011年2月 Java大版内专家分月排行榜第三2010年9月 Java大版内专家分月排行榜第三2008年9月 Java大版内专家分月排行榜第三2008年1月 Java大版内专家分月排行榜第三2007年11月 Java大版内专家分月排行榜第三2007年9月 Java大版内专家分月排行榜第三
2012年2月 挨踢职涯大版内专家分月排行榜第三2011年11月 挨踢职涯大版内专家分月排行榜第三2011年10月 挨踢职涯大版内专家分月排行榜第三
2010年11月 总版技术专家分月排行榜第二2010年9月 总版技术专家分月排行榜第二2010年8月 总版技术专家分月排行榜第二
2010年7月 总版技术专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。

我要回帖

更多关于 相亲没见过面如何聊天 的文章

 

随机推荐