started wokring on internal code generator
This commit is contained in:
@@ -11,14 +11,16 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
public class CodeDomCodeGenerator : CodeGenerator, IDisposable
|
||||
{
|
||||
private readonly string className;
|
||||
private readonly MemberAttributes? classAccessibility;
|
||||
private readonly CodeNamespace codeNamespace;
|
||||
private readonly CodeCompileUnit compileUnit;
|
||||
private readonly CodeDomProvider provider;
|
||||
|
||||
public CodeDomCodeGenerator(IResourceParser resourceParser, string className, string defaultNamespace, CodeDomProvider codeDomProvider = null)
|
||||
public CodeDomCodeGenerator(IResourceParser resourceParser, string className, string defaultNamespace, CodeDomProvider codeDomProvider = null, MemberAttributes? classAccessibility = null)
|
||||
: base(resourceParser, defaultNamespace)
|
||||
{
|
||||
this.className = className;
|
||||
this.classAccessibility = classAccessibility;
|
||||
compileUnit = new CodeCompileUnit();
|
||||
provider = codeDomProvider ?? new CSharpCodeProvider();
|
||||
codeNamespace = new CodeNamespace(defaultNamespace);
|
||||
@@ -45,7 +47,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
{
|
||||
IsClass = true,
|
||||
IsPartial = true,
|
||||
Attributes = MemberAttributes.Public | MemberAttributes.Static
|
||||
Attributes = (classAccessibility.HasValue ? classAccessibility.Value : MemberAttributes.Public) | MemberAttributes.Static
|
||||
};
|
||||
|
||||
const string resourceLoaderType = "ResourceLoader";
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
using System.CodeDom.Compiler;
|
||||
using System.CodeDom;
|
||||
using System.CodeDom.Compiler;
|
||||
|
||||
namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
{
|
||||
public class CodeGeneratorFactory
|
||||
{
|
||||
public ICodeGenerator Create(string className, string defaultNamespace, string inputFileContents, CodeDomProvider codeDomProvider = null)
|
||||
public ICodeGenerator Create(string className, string defaultNamespace, string inputFileContents, CodeDomProvider codeDomProvider = null, MemberAttributes? classAccessibility = null)
|
||||
{
|
||||
return new CodeDomCodeGenerator(new ResourceParser(inputFileContents), className, defaultNamespace, codeDomProvider);
|
||||
return new CodeDomCodeGenerator(new ResourceParser(inputFileContents), className, defaultNamespace, codeDomProvider, classAccessibility);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
using System.CodeDom;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.CSharp;
|
||||
|
||||
namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
{
|
||||
[Guid("151F74CA-404D-4188-B994-D7683C32ACF4")]
|
||||
[ComVisible(true)]
|
||||
public class ReswFileCSharpCodeGeneratorInternal : ReswFileCodeGenerator
|
||||
{
|
||||
public ReswFileCSharpCodeGeneratorInternal()
|
||||
: base(new CSharpCodeProvider(), MemberAttributes.Assembly)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultExtension(out string pbstrDefaultExtension)
|
||||
{
|
||||
pbstrDefaultExtension = ".cs";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.CodeDom;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Text;
|
||||
@@ -11,10 +12,12 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
public abstract class ReswFileCodeGenerator : IVsSingleFileGenerator
|
||||
{
|
||||
private readonly CodeDomProvider codeDomProvider;
|
||||
private readonly MemberAttributes? classAccessibility;
|
||||
|
||||
protected ReswFileCodeGenerator(CodeDomProvider codeDomProvider)
|
||||
protected ReswFileCodeGenerator(CodeDomProvider codeDomProvider, MemberAttributes? classAccessibility = null)
|
||||
{
|
||||
this.codeDomProvider = codeDomProvider;
|
||||
this.classAccessibility = classAccessibility;
|
||||
}
|
||||
|
||||
#region IVsSingleFileGenerator Members
|
||||
@@ -32,7 +35,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
{
|
||||
var className = ClassNameExtractor.GetClassName(wszInputFilePath);
|
||||
var factory = new CodeGeneratorFactory();
|
||||
var codeGenerator = factory.Create(className, wszDefaultNamespace, bstrInputFileContents, codeDomProvider);
|
||||
var codeGenerator = factory.Create(className, wszDefaultNamespace, bstrInputFileContents, codeDomProvider, classAccessibility);
|
||||
var code = codeGenerator.GenerateCode();
|
||||
|
||||
rgbOutputFileContents[0] = code.ConvertToIntPtr(out pcbOutput);
|
||||
|
||||
+22
@@ -0,0 +1,22 @@
|
||||
using System.CodeDom;
|
||||
using System.Runtime.InteropServices;
|
||||
using Microsoft.VisualBasic;
|
||||
|
||||
namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
|
||||
{
|
||||
[Guid("6C6AC14F-9B11-47C1-BC90-DFBFB89B1CB8")]
|
||||
[ComVisible(true)]
|
||||
public class ReswFileVisualBasicCodeGeneratorInternal : ReswFileCodeGenerator
|
||||
{
|
||||
public ReswFileVisualBasicCodeGeneratorInternal()
|
||||
: base(new VBCodeProvider(), MemberAttributes.Assembly)
|
||||
{
|
||||
}
|
||||
|
||||
public override int DefaultExtension(out string pbstrDefaultExtension)
|
||||
{
|
||||
pbstrDefaultExtension = ".vb";
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,9 @@
|
||||
<Compile Include="CustomTool\ResourceParser.cs" />
|
||||
<Compile Include="CustomTool\ReswFileCodeGenerator.cs" />
|
||||
<Compile Include="CustomTool\ReswFileCSharpCodeGenerator.cs" />
|
||||
<Compile Include="CustomTool\ReswFileCSharpCodeGeneratorInternal.cs" />
|
||||
<Compile Include="CustomTool\ReswFileVisualBasicCodeGenerator.cs" />
|
||||
<Compile Include="CustomTool\ReswFileVisualBasicCodeGeneratorInternal.cs" />
|
||||
<Compile Include="CustomTool\StringExtension.cs" />
|
||||
<Compile Include="Guids.cs" />
|
||||
<Compile Include="Resources.Designer.cs">
|
||||
|
||||
@@ -29,6 +29,8 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage
|
||||
[ProvideObject(typeof(ReswFileVisualBasicCodeGenerator))]
|
||||
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGenerator), "ReswFileCodeGenerator", "ResW File Code Generator for C#", "{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}", true)] // csharp
|
||||
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGenerator), "ReswFileCodeGenerator", "ResW File Code Generator for VB", "{164B10B9-B200-11D0-8C61-00A0C91E29D5}", true)] // visual basic
|
||||
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGeneratorInternal), "ReswFileCodeGeneratorInternal", "ResW File Code Generator for C#", "{151F74CA-404D-4188-B994-D7683C32ACF4}", true)] // csharp
|
||||
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGeneratorInternal), "ReswFileCodeGeneratorInternal", "ResW File Code Generator for VB", "{6C6AC14F-9B11-47C1-BC90-DFBFB89B1CB8}", true)] // visual basic
|
||||
public sealed class VSPackagePackage : Package
|
||||
{
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user