implemented visual basic code generation support
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user