Languages and Frameworks/DotNet/Convert VBNet Into CSharp and CSharp into VBNet
From
For the cases where we have a VB project and want to bring it into CSharp, the following script can be used to convert/create CSharp to/from VBNet
Contents |
Videos
DotNet - Convert CSharp into VBNet
DotNet - Convert VBNet into CSharp
Source Code
var topPanel = O2Gui.open<Panel>("Util - Convert VB to CSharp (or CSharp to VB)",640,480); var mainGui = topPanel.add_1x1("Files", "Source Code",true, 200); var code = mainGui[1].add_1x1("CSharp", "VB.Net",false); var sourceFiles = mainGui[0].add_TreeView().showSelection(); var csharpCode = code[0].add_SourceCodeViewer(); var vbCode = code[1].add_SourceCodeViewer(); var targetDirectory = PublicDI.config.getTempFolderInTempDirectory("_DotNet_CodeTransformation"); var actionsPanel = sourceFiles.parent() .insert_Above<Panel>(100) .add_GroupBox("Options"); Func<string,string, string> transformFile_CS_to_VB = (fullPath, virtualPath)=>{ var astCSharp = new Ast_CSharp(fullPath); var transformedFile = targetDirectory.pathCombine(virtualPath); transformedFile = transformedFile.replaceLast(".cs",".vb"); transformedFile.directoryName().createDir(); astCSharp.AstDetails.VBNetCode.save(transformedFile); "transformed {0} -> {1}".info(virtualPath, transformedFile); return transformedFile; }; Func<string,string, string> transformFile_VB_to_CS = (fullPath, virtualPath)=>{ var astCSharp = new Ast_CSharp(fullPath); var transformedFile = targetDirectory.pathCombine(virtualPath); transformedFile = transformedFile.replaceLast(".vb",".cs"); transformedFile.directoryName().createDir(); astCSharp.AstDetails.CSharpCode.save(transformedFile); "transformed {0} -> {1}".info(virtualPath, transformedFile); return transformedFile; }; Action transformAllFiles = ()=>{ foreach(var node in sourceFiles.nodes()) { var fullPath =(string)node.get_Tag(); if (fullPath.extension(".vb")) transformFile_VB_to_CS(fullPath, node.get_Text()); else transformFile_CS_to_VB(fullPath, node.get_Text()); //break; } }; Action<string> setTargetDirectory = (path)=>{ targetDirectory = path; }; Action<string> loadFilesFromDirectory = (path)=>{ sourceFiles.clear(); var targetFiles = path.files("*.cs",true); targetFiles.AddRange(path.files("*.vb",true)); foreach(var file in targetFiles) { var nodeText = file.remove(path); sourceFiles.add_Node(nodeText, file); } }; sourceFiles.afterSelect<string>( (file)=>{ if (file.extension(".cs")) { csharpCode.open(file); var newFile = transformFile_CS_to_VB(file, sourceFiles.selected().get_Text()); vbCode.open(newFile); } if (file.extension(".vb")) { vbCode.open(file); var newFile = transformFile_VB_to_CS(file, sourceFiles.selected().get_Text()); csharpCode.open(newFile); } //vbCode.set_Text(astCSharp.AstDetails.VBNetCode,"a.vb"); }); var sourceComboBox = topPanel.insert_Above<Panel>(25) .add_LabelAndComboBoxAndButton("Source folder:","","load",loadFilesFromDirectory) .controls<ComboBox>(); var targetComboBox = topPanel.insert_Above<Panel>(25) .add_LabelAndComboBoxAndButton("Target folder: ","","create",setTargetDirectory) .controls<ComboBox>(); actionsPanel.add_Button("Transform All",0,0,()=> transformAllFiles()).fill(); sourceComboBox.sendKeys(PublicDI.config.LocalScriptsFolder.line()); targetComboBox.set_Text(targetDirectory); this.sleep(1000); sourceFiles.selectFirst(); //using O2.External.SharpDevelop.AST //using O2.API.AST.ExtensionMethods; //using O2.API.AST.ExtensionMethods.CSharp; //O2Ref:O2_API_AST.dll //O2Ref:QuickGraph.dll
