diff --git a/RESW File Code Generator/VSPackage/CustomTool/CodeDomCodeGenerator.cs b/RESW File Code Generator/VSPackage/CustomTool/CodeDomCodeGenerator.cs
index 8c3764b..ba2a5f4 100644
--- a/RESW File Code Generator/VSPackage/CustomTool/CodeDomCodeGenerator.cs
+++ b/RESW File Code Generator/VSPackage/CustomTool/CodeDomCodeGenerator.cs
@@ -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";
diff --git a/RESW File Code Generator/VSPackage/CustomTool/CodeGeneratorFactory.cs b/RESW File Code Generator/VSPackage/CustomTool/CodeGeneratorFactory.cs
index b1c494b..0a849b1 100644
--- a/RESW File Code Generator/VSPackage/CustomTool/CodeGeneratorFactory.cs
+++ b/RESW File Code Generator/VSPackage/CustomTool/CodeGeneratorFactory.cs
@@ -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);
}
}
}
diff --git a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCSharpCodeGeneratorInternal.cs b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCSharpCodeGeneratorInternal.cs
new file mode 100644
index 0000000..728ba2f
--- /dev/null
+++ b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCSharpCodeGeneratorInternal.cs
@@ -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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
index 5f31f1d..b1a7e8c 100644
--- a/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
+++ b/RESW File Code Generator/VSPackage/CustomTool/ReswFileCodeGenerator.cs
@@ -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);
diff --git a/RESW File Code Generator/VSPackage/CustomTool/ReswFileVisualBasicCodeGeneratorInternal.cs b/RESW File Code Generator/VSPackage/CustomTool/ReswFileVisualBasicCodeGeneratorInternal.cs
new file mode 100644
index 0000000..d296f6a
--- /dev/null
+++ b/RESW File Code Generator/VSPackage/CustomTool/ReswFileVisualBasicCodeGeneratorInternal.cs
@@ -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;
+ }
+ }
+}
\ No newline at end of file
diff --git a/RESW File Code Generator/VSPackage/VSPackage.csproj b/RESW File Code Generator/VSPackage/VSPackage.csproj
index b210b53..a03bc30 100644
--- a/RESW File Code Generator/VSPackage/VSPackage.csproj
+++ b/RESW File Code Generator/VSPackage/VSPackage.csproj
@@ -129,7 +129,9 @@
+
+
diff --git a/RESW File Code Generator/VSPackage/VSPackagePackage.cs b/RESW File Code Generator/VSPackage/VSPackagePackage.cs
index 18a72be..3b3c08a 100644
--- a/RESW File Code Generator/VSPackage/VSPackagePackage.cs
+++ b/RESW File Code Generator/VSPackage/VSPackagePackage.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
{
///