diff --git a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs index 04847d65ed2..a0937d6b5b0 100644 --- a/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs +++ b/src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs @@ -56,13 +56,22 @@ public void GenerateCode(FileProjectItem item, CustomToolContext context) string[] unmatchable = null; + string generatedCodeNamespace = context.OutputNamespace; + if (context.Project.LanguageProperties == ICSharpCode.SharpDevelop.Dom.LanguageProperties.VBNet) { + if (generatedCodeNamespace == context.Project.RootNamespace) { + generatedCodeNamespace = null; // namespace is implicit in VB + } else if (generatedCodeNamespace.StartsWith(context.Project.RootNamespace + ".", StringComparison.OrdinalIgnoreCase)) { + generatedCodeNamespace = generatedCodeNamespace.Substring(context.Project.RootNamespace.Length + 1); + } + } + context.WriteCodeDomToFile( item, context.GetOutputFileName(item, ".Designer"), StronglyTypedResourceBuilder.Create( resources, // resourceList Path.GetFileNameWithoutExtension(inputFilePath), // baseName - context.OutputNamespace, // generatedCodeNamespace + generatedCodeNamespace, // generatedCodeNamespace context.OutputNamespace, // resourcesNamespace context.Project.LanguageProperties.CodeDomProvider, // codeProvider createInternalClass, // internal class diff --git a/src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs b/src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs index fe2b3a8b5fb..6f6fb645935 100644 --- a/src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs +++ b/src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs @@ -331,6 +331,7 @@ public override object VisitMethodDeclaration(MethodDeclaration methodDeclaratio CodeMemberMethod memberMethod = new CodeMemberMethod(); memberMethod.Name = methodDeclaration.Name; memberMethod.Attributes = ConvMemberAttributes(methodDeclaration.Modifier); + memberMethod.ReturnType = ConvType(methodDeclaration.TypeReference); // RG: Private Interface Decl if ((memberMethod.Attributes & MemberAttributes.Public) != MemberAttributes.Public && diff --git a/src/Main/Base/Project/Src/Project/CustomTool.cs b/src/Main/Base/Project/Src/Project/CustomTool.cs index 83b507284e6..d9594ed5523 100644 --- a/src/Main/Base/Project/Src/Project/CustomTool.cs +++ b/src/Main/Base/Project/Src/Project/CustomTool.cs @@ -32,7 +32,6 @@ public sealed class CustomToolContext { IProject project; IProgressMonitor progressMonitor; - string outputNamespace; internal bool RunningSeparateThread; public CustomToolContext(IProject project) @@ -56,10 +55,7 @@ public CustomToolContext(IProject project, IProgressMonitor progressMonitor) get { return project; } } - public string OutputNamespace { - get { return outputNamespace; } - set { outputNamespace = value; } - } + public string OutputNamespace { get; set; } /// /// Runs a method asynchronously. Prevents another CustomTool invocation @@ -419,20 +415,25 @@ public static string GetDefaultNamespace(IProject project, string fileName) if (fileName == null) throw new ArgumentNullException("fileName"); - string relPath = FileUtility.GetRelativePath(project.Directory, Path.GetDirectoryName(fileName)); - string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); - StringBuilder standardNameSpace = new StringBuilder(project.RootNamespace); - foreach(string subdir in subdirs) { - if (subdir == "." || subdir == ".." || subdir.Length == 0) - continue; - if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase)) - continue; - if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase)) - continue; - standardNameSpace.Append('.'); - standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true)); + if (project.LanguageProperties == Dom.LanguageProperties.VBNet) { + return project.RootNamespace; + } else { + string relPath = FileUtility.GetRelativePath(project.Directory, Path.GetDirectoryName(fileName)); + string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); + StringBuilder standardNameSpace = new StringBuilder(project.RootNamespace); + foreach(string subdir in subdirs) { + if (subdir == "." || subdir == ".." || subdir.Length == 0) + continue; + if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase)) + continue; + if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase)) + continue; + if (standardNameSpace.Length > 0) + standardNameSpace.Append('.'); + standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true)); + } + return standardNameSpace.ToString(); } - return standardNameSpace.ToString(); } static void RunCustomTool(CustomToolRun run)