implemented visual basic code generation support

This commit is contained in:
Christian Resma Helle
2012-11-11 23:18:17 +01:00
parent bf7d815274
commit c7fdbf2ac9
9 changed files with 474 additions and 52 deletions
@@ -1,4 +1,5 @@
using System;
using System.CodeDom.Compiler;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
@@ -6,19 +7,20 @@ using Microsoft.VisualStudio.Shell.Interop;
namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool
{
[Guid("98983F6D-BC77-46AC-BA5A-8D9E8763F0D2")]
[ComVisible(true)]
public class ReswFileCodeGenerator : IVsSingleFileGenerator
public abstract class ReswFileCodeGenerator : IVsSingleFileGenerator
{
#region IVsSingleFileGenerator Members
private readonly CodeDomProvider codeDomProvider;
public int DefaultExtension(out string pbstrDefaultExtension)
protected ReswFileCodeGenerator(CodeDomProvider codeDomProvider)
{
pbstrDefaultExtension = ".cs";
return 0;
this.codeDomProvider = codeDomProvider;
}
public int Generate(string wszInputFilePath,
#region IVsSingleFileGenerator Members
public abstract int DefaultExtension(out string pbstrDefaultExtension);
public virtual int Generate(string wszInputFilePath,
string bstrInputFileContents,
string wszDefaultNamespace,
IntPtr[] rgbOutputFileContents,
@@ -28,11 +30,11 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.CustomTool
try
{
var factory = new CodeGeneratorFactory();
var codeGenerator = factory.Create(wszDefaultNamespace, bstrInputFileContents);
var codeGenerator = factory.Create(wszDefaultNamespace, bstrInputFileContents, codeDomProvider);
var code = codeGenerator.GenerateCode();
var data = Encoding.UTF8.GetBytes(code);
rgbOutputFileContents[0] = Marshal.AllocCoTaskMem(data.Length);
Marshal.Copy(data, 0, rgbOutputFileContents[0], data.Length);