Added Support for Visual Studio 2013 and Generating the class as Internal (C#) or Friend (VB)

This commit is contained in:
Christian Resma Helle
2013-08-15 14:52:10 +02:00
parent 2f134acc5e
commit 44b1f1ffd0
14 changed files with 136 additions and 35 deletions
@@ -3,6 +3,7 @@ using System.CodeDom;
using System.CodeDom.Compiler;
using System.Globalization;
using System.IO;
using System.Reflection;
using System.Text;
using Microsoft.CSharp;
@@ -11,12 +12,12 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
public class CodeDomCodeGenerator : CodeGenerator, IDisposable
{
private readonly string className;
private readonly MemberAttributes? classAccessibility;
private readonly TypeAttributes? classAccessibility;
private readonly CodeNamespace codeNamespace;
private readonly CodeCompileUnit compileUnit;
private readonly CodeDomProvider provider;
public CodeDomCodeGenerator(IResourceParser resourceParser, string className, string defaultNamespace, CodeDomProvider codeDomProvider = null, MemberAttributes? classAccessibility = null)
public CodeDomCodeGenerator(IResourceParser resourceParser, string className, string defaultNamespace, CodeDomProvider codeDomProvider = null, TypeAttributes? classAccessibility = null)
: base(resourceParser, defaultNamespace)
{
this.className = className;
@@ -47,7 +48,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
{
IsClass = true,
IsPartial = true,
Attributes = (classAccessibility.HasValue ? classAccessibility.Value : MemberAttributes.Public) | MemberAttributes.Static
TypeAttributes = classAccessibility.HasValue ? classAccessibility.Value : TypeAttributes.Public
};
const string resourceLoaderType = "ResourceLoader";
@@ -159,7 +160,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
}
#region IDisposable
private bool disposed;
~CodeDomCodeGenerator()
@@ -180,7 +181,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
if (dispose)
provider.Dispose();
}
}
#endregion
}
@@ -1,11 +1,12 @@
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Reflection;
namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
{
public class CodeGeneratorFactory
{
public ICodeGenerator Create(string className, string defaultNamespace, string inputFileContents, CodeDomProvider codeDomProvider = null, MemberAttributes? classAccessibility = null)
public ICodeGenerator Create(string className, string defaultNamespace, string inputFileContents, CodeDomProvider codeDomProvider = null, TypeAttributes? classAccessibility = null)
{
return new CodeDomCodeGenerator(new ResourceParser(inputFileContents), className, defaultNamespace, codeDomProvider, classAccessibility);
}
@@ -1,4 +1,5 @@
using System.CodeDom;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.CSharp;
@@ -9,7 +10,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
public class ReswFileCSharpCodeGeneratorInternal : ReswFileCodeGenerator
{
public ReswFileCSharpCodeGeneratorInternal()
: base(new CSharpCodeProvider(), MemberAttributes.Assembly)
: base(new CSharpCodeProvider(), TypeAttributes.NestedAssembly)
{
}
@@ -1,6 +1,7 @@
using System;
using System.CodeDom;
using System.CodeDom.Compiler;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
@@ -12,9 +13,9 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
public abstract class ReswFileCodeGenerator : IVsSingleFileGenerator
{
private readonly CodeDomProvider codeDomProvider;
private readonly MemberAttributes? classAccessibility;
private readonly TypeAttributes? classAccessibility;
protected ReswFileCodeGenerator(CodeDomProvider codeDomProvider, MemberAttributes? classAccessibility = null)
protected ReswFileCodeGenerator(CodeDomProvider codeDomProvider, TypeAttributes? classAccessibility = null)
{
this.codeDomProvider = codeDomProvider;
this.classAccessibility = classAccessibility;
@@ -1,4 +1,4 @@
using System.CodeDom;
using System.Reflection;
using System.Runtime.InteropServices;
using Microsoft.VisualBasic;
@@ -9,7 +9,7 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
public class ReswFileVisualBasicCodeGeneratorInternal : ReswFileCodeGenerator
{
public ReswFileVisualBasicCodeGeneratorInternal()
: base(new VBCodeProvider(), MemberAttributes.Assembly)
: base(new VBCodeProvider(), TypeAttributes.NestedAssembly)
{
}
@@ -27,12 +27,14 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage
[DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\11.0")]
[ProvideObject(typeof(ReswFileCSharpCodeGenerator))]
[ProvideObject(typeof(ReswFileVisualBasicCodeGenerator))]
[ProvideObject(typeof(ReswFileCSharpCodeGeneratorInternal))]
[ProvideObject(typeof(ReswFileVisualBasicCodeGeneratorInternal))]
[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(ReswFileCSharpCodeGenerator), "PublicReswFileCodeGenerator", "ResW File Code Generator for C#", "{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGenerator), "PublicReswFileCodeGenerator", "ResW File Code Generator for VB", "{164B10B9-B200-11D0-8C61-00A0C91E29D5}", true)] // visual basic
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for C#", "{151F74CA-404D-4188-B994-D7683C32ACF4}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for VB", "{6C6AC14F-9B11-47C1-BC90-DFBFB89B1CB8}", true)] // visual basic
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for C#", "{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for VB", "{164B10B9-B200-11D0-8C61-00A0C91E29D5}", true)] // visual basic
public sealed class VisualStudio2012Package : Package
{
/// <summary>
@@ -27,12 +27,14 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage
[DefaultRegistryRoot("Software\\Microsoft\\VisualStudio\\12.0")]
[ProvideObject(typeof(ReswFileCSharpCodeGenerator))]
[ProvideObject(typeof(ReswFileVisualBasicCodeGenerator))]
[ProvideObject(typeof(ReswFileCSharpCodeGeneratorInternal))]
[ProvideObject(typeof(ReswFileVisualBasicCodeGeneratorInternal))]
[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(ReswFileCSharpCodeGenerator), "PublicReswFileCodeGenerator", "ResW File Code Generator for C#", "{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGenerator), "PublicReswFileCodeGenerator", "ResW File Code Generator for VB", "{164B10B9-B200-11D0-8C61-00A0C91E29D5}", true)] // visual basic
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for C#", "{151F74CA-404D-4188-B994-D7683C32ACF4}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for VB", "{6C6AC14F-9B11-47C1-BC90-DFBFB89B1CB8}", true)] // visual basic
[ProvideGeneratorAttribute(typeof(ReswFileCSharpCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for C#", "{FAE04EC1-301F-11D3-BF4B-00C04F79EFBC}", true)] // csharp
[ProvideGeneratorAttribute(typeof(ReswFileVisualBasicCodeGeneratorInternal), "InternalReswFileCodeGenerator", "ResW File Code Generator for VB", "{164B10B9-B200-11D0-8C61-00A0C91E29D5}", true)] // visual basic
public sealed class VisualStudio2013Package : Package
{
/// <summary>
@@ -8,7 +8,7 @@
Language="en-US"
Publisher="Christian Resma Helle" />
<DisplayName>ResW File Code Generator</DisplayName>
<Description>Information about my packageA Visual Studio 2012 Custom Tool for generating a strongly typed helper class for accessing localized resources from a .ResW file.</Description>
<Description xml:space="preserve">A Visual Studio Custom Tool for generating a strongly typed helper class for accessing localized resources from a .ResW file.</Description>
<MoreInfo>http://visualstudiogallery.msdn.microsoft.com/3ab88efd-1afb-4ff5-9faf-8825a282596a</MoreInfo>
<License>License.txt</License>
</Metadata>