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. 37
      src/Main/Base/Project/Src/Project/CustomTool.cs

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

@ -56,13 +56,22 @@ namespace ResourceEditor
string[] unmatchable = null; 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( context.WriteCodeDomToFile(
item, item,
context.GetOutputFileName(item, ".Designer"), context.GetOutputFileName(item, ".Designer"),
StronglyTypedResourceBuilder.Create( StronglyTypedResourceBuilder.Create(
resources, // resourceList resources, // resourceList
Path.GetFileNameWithoutExtension(inputFilePath), // baseName Path.GetFileNameWithoutExtension(inputFilePath), // baseName
context.OutputNamespace, // generatedCodeNamespace generatedCodeNamespace, // generatedCodeNamespace
context.OutputNamespace, // resourcesNamespace context.OutputNamespace, // resourcesNamespace
context.Project.LanguageProperties.CodeDomProvider, // codeProvider context.Project.LanguageProperties.CodeDomProvider, // codeProvider
createInternalClass, // internal class createInternalClass, // internal class

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

@ -331,6 +331,7 @@ namespace ICSharpCode.NRefactory.Visitors
CodeMemberMethod memberMethod = new CodeMemberMethod(); CodeMemberMethod memberMethod = new CodeMemberMethod();
memberMethod.Name = methodDeclaration.Name; memberMethod.Name = methodDeclaration.Name;
memberMethod.Attributes = ConvMemberAttributes(methodDeclaration.Modifier); memberMethod.Attributes = ConvMemberAttributes(methodDeclaration.Modifier);
memberMethod.ReturnType = ConvType(methodDeclaration.TypeReference);
// RG: Private Interface Decl // RG: Private Interface Decl
if ((memberMethod.Attributes & MemberAttributes.Public) != MemberAttributes.Public && if ((memberMethod.Attributes & MemberAttributes.Public) != MemberAttributes.Public &&

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

@ -32,7 +32,6 @@ namespace ICSharpCode.SharpDevelop.Project
{ {
IProject project; IProject project;
IProgressMonitor progressMonitor; IProgressMonitor progressMonitor;
string outputNamespace;
internal bool RunningSeparateThread; internal bool RunningSeparateThread;
public CustomToolContext(IProject project) public CustomToolContext(IProject project)
@ -56,10 +55,7 @@ namespace ICSharpCode.SharpDevelop.Project
get { return project; } get { return project; }
} }
public string OutputNamespace { public string OutputNamespace { get; set; }
get { return outputNamespace; }
set { outputNamespace = value; }
}
/// <summary> /// <summary>
/// Runs a method asynchronously. Prevents another CustomTool invocation /// Runs a method asynchronously. Prevents another CustomTool invocation
@ -419,20 +415,25 @@ namespace ICSharpCode.SharpDevelop.Project
if (fileName == null) if (fileName == null)
throw new ArgumentNullException("fileName"); throw new ArgumentNullException("fileName");
string relPath = FileUtility.GetRelativePath(project.Directory, Path.GetDirectoryName(fileName)); if (project.LanguageProperties == Dom.LanguageProperties.VBNet) {
string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar); return project.RootNamespace;
StringBuilder standardNameSpace = new StringBuilder(project.RootNamespace); } else {
foreach(string subdir in subdirs) { string relPath = FileUtility.GetRelativePath(project.Directory, Path.GetDirectoryName(fileName));
if (subdir == "." || subdir == ".." || subdir.Length == 0) string[] subdirs = relPath.Split(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar);
continue; StringBuilder standardNameSpace = new StringBuilder(project.RootNamespace);
if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase)) foreach(string subdir in subdirs) {
continue; if (subdir == "." || subdir == ".." || subdir.Length == 0)
if (subdir.Equals("source", StringComparison.OrdinalIgnoreCase)) continue;
continue; if (subdir.Equals("src", StringComparison.OrdinalIgnoreCase))
standardNameSpace.Append('.'); continue;
standardNameSpace.Append(NewFileDialog.GenerateValidClassOrNamespaceName(subdir, true)); 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) static void RunCustomTool(CustomToolRun run)

Loading…
Cancel
Save