Browse Source

Fixed custom tool output namespace for VB projects (http://community.sharpdevelop.net/forums/t/11240.aspx)

pull/1/head
Daniel Grunwald 15 years ago
parent
commit
dc35d18bc1
  1. 11
      src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs
  2. 1
      src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs
  3. 11
      src/Main/Base/Project/Src/Project/CustomTool.cs

11
src/AddIns/DisplayBindings/ResourceEditor/Project/Src/ResourceCodeGeneratorTool.cs

@ -56,13 +56,22 @@ namespace ResourceEditor @@ -56,13 +56,22 @@ namespace ResourceEditor
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

1
src/Libraries/NRefactory/Project/Src/Visitors/CodeDOMOutputVisitor.cs

@ -331,6 +331,7 @@ namespace ICSharpCode.NRefactory.Visitors @@ -331,6 +331,7 @@ namespace ICSharpCode.NRefactory.Visitors
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 &&

11
src/Main/Base/Project/Src/Project/CustomTool.cs

@ -32,7 +32,6 @@ namespace ICSharpCode.SharpDevelop.Project @@ -32,7 +32,6 @@ namespace ICSharpCode.SharpDevelop.Project
{
IProject project;
IProgressMonitor progressMonitor;
string outputNamespace;
internal bool RunningSeparateThread;
public CustomToolContext(IProject project)
@ -56,10 +55,7 @@ namespace ICSharpCode.SharpDevelop.Project @@ -56,10 +55,7 @@ namespace ICSharpCode.SharpDevelop.Project
get { return project; }
}
public string OutputNamespace {
get { return outputNamespace; }
set { outputNamespace = value; }
}
public string OutputNamespace { get; set; }
/// <summary>
/// Runs a method asynchronously. Prevents another CustomTool invocation
@ -419,6 +415,9 @@ namespace ICSharpCode.SharpDevelop.Project @@ -419,6 +415,9 @@ namespace ICSharpCode.SharpDevelop.Project
if (fileName == null)
throw new ArgumentNullException("fileName");
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);
@ -429,11 +428,13 @@ namespace ICSharpCode.SharpDevelop.Project @@ -429,11 +428,13 @@ namespace ICSharpCode.SharpDevelop.Project
continue;
if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase))
continue;
if (standardNameSpace.Length > 0)
standardNameSpace.Append('.');
standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true));
}
return standardNameSpace.ToString();
}
}
static void RunCustomTool(CustomToolRun run)
{

Loading…
Cancel
Save