SEARCH
TOOLBOX
LANGUAGES
modified on 28 June 2010 at 22:31 ••• 1,408 views

Languages and Frameworks/DotNet/Convert VBNet Into CSharp and CSharp into VBNet

From

Jump to: navigation, search

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
MediaWiki Appliance - Powered by TurnKey Linux