Browse Source

Adjust ProjectTypeGuids when converting project between C# and VB.

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/branches/3.0@4011 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 17 years ago
parent
commit
d0345f7801
  1. 9
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs
  2. 2
      src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBNetConverter.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  4. 4
      src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs
  5. 27
      src/Main/Base/Project/Src/Project/Solution/ProjectTypeGuids.cs
  6. 29
      src/Main/Base/Project/Src/Util/ExtensionMethods.cs

9
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Project/VBNetToCSharpConverter.cs

@ -54,13 +54,18 @@ namespace CSharpBinding @@ -54,13 +54,18 @@ namespace CSharpBinding
base.CopyProperties(sourceProject, targetProject);
CSharpProject project = (CSharpProject)targetProject;
// 1591 = missing XML comment - the VB compiler does not have this warning
// we disable it by default because many VB projects have XML documentation turned on
// even though only few members are commented
project.SetProperty("NoWarn", "1591");
// (we replace existing NoWarn entries because VB and C# error codes don't match)
project.SetProperty("NoWarn", "1591");
FixProperty(project, "DefineConstants",
delegate(string v) { return v.Replace(',', ';'); });
v => v.Replace(',', ';'));
FixProperty(project, "ProjectTypeGuids",
v => v.Replace(ProjectTypeGuids.VBNet, ProjectTypeGuids.CSharp, StringComparison.OrdinalIgnoreCase));
}
protected override void ConvertAst(CompilationUnit compilationUnit, List<ISpecial> specials, FileProjectItem sourceItem)

2
src/AddIns/BackendBindings/VBNetBinding/Project/Src/Project/CSharpToVBNetConverter.cs

@ -61,6 +61,8 @@ namespace VBNetBinding @@ -61,6 +61,8 @@ namespace VBNetBinding
VBNetProject vbProject = (VBNetProject)targetProject;
base.CopyProperties(sourceProject, targetProject);
FixProperty(vbProject, "DefineConstants", v => v.Replace(';', ','));
FixProperty(vbProject, "ProjectTypeGuids",
v => v.Replace(ProjectTypeGuids.CSharp, ProjectTypeGuids.VBNet, StringComparison.OrdinalIgnoreCase));
// determine the StartupObject
startupObject = vbProject.GetEvaluatedProperty("StartupObject");

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -130,6 +130,7 @@ @@ -130,6 +130,7 @@
<Compile Include="Src\Project\ProjectStartException.cs" />
<Compile Include="Src\Project\ProjectLoadException.cs" />
<Compile Include="Src\Project\ProjectPropertyChangedEventArgs.cs" />
<Compile Include="Src\Project\Solution\ProjectTypeGuids.cs" />
<Compile Include="Src\Services\Debugger\BreakpointBookmark.cs" />
<Compile Include="Src\Services\Debugger\BreakpointBookmarkEventArgs.cs" />
<Compile Include="Src\Services\DisplayBinding\ExternalProcessDisplayBinding.cs" />

4
src/Main/Base/Project/Src/Project/Converter/LanguageConverter.cs

@ -106,14 +106,12 @@ namespace ICSharpCode.SharpDevelop.Project.Converter @@ -106,14 +106,12 @@ namespace ICSharpCode.SharpDevelop.Project.Converter
protected virtual void FixExtensionOfExtraProperties(FileProjectItem item, string sourceExtension, string targetExtension)
{
sourceExtension = sourceExtension.ToLowerInvariant();
List<KeyValuePair<string, string>> replacements = new List<KeyValuePair<string, string>>();
foreach (string metadataName in item.MetadataNames) {
if ("Include".Equals(metadataName, StringComparison.OrdinalIgnoreCase))
continue;
string value = item.GetMetadata(metadataName);
if (value.ToLowerInvariant().EndsWith(sourceExtension)) {
if (value.EndsWith(sourceExtension, StringComparison.OrdinalIgnoreCase)) {
replacements.Add(new KeyValuePair<string, string>(metadataName, value));
}
}

27
src/Main/Base/Project/Src/Project/Solution/ProjectTypeGuids.cs

@ -0,0 +1,27 @@ @@ -0,0 +1,27 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <author name="Daniel Grunwald"/>
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.SharpDevelop.Project
{
/// <summary>
/// Contains constants for the project type GUIDs.
///
/// Source: http://www.mztools.com/Articles/2008/MZ2008017.aspx
/// </summary>
public static class ProjectTypeGuids
{
public const string CSharp = "{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}";
public const string VBNet = "{F184B08F-C81C-45F6-A57F-5ABD9991F28F}";
public const string CPlusPlus = "{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}";
public const string WebApplication = "{349C5851-65DF-11DA-9384-00065B846F21}";
public const string WebSite = "{E24C65DC-7377-472B-9ABA-BC803B73C61A}";
public const string Silverlight = "{A1591282-1198-4647-A2B1-27E5FF5F6F3B}";
}
}

29
src/Main/Base/Project/Src/Util/ExtensionMethods.cs

@ -10,6 +10,7 @@ using System.Collections; @@ -10,6 +10,7 @@ using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ICSharpCode.SharpDevelop
@ -65,5 +66,33 @@ namespace ICSharpCode.SharpDevelop @@ -65,5 +66,33 @@ namespace ICSharpCode.SharpDevelop
}
}
}
public static string Replace(this string original, string pattern, string replacement, StringComparison comparisonType)
{
if (original == null)
throw new ArgumentNullException("original");
if (pattern == null)
throw new ArgumentNullException("pattern");
if (pattern.Length == 0)
throw new ArgumentException("String cannot be of zero length.", "pattern");
if (comparisonType != StringComparison.Ordinal && comparisonType != StringComparison.OrdinalIgnoreCase)
throw new NotSupportedException("Currently only ordinal comparisons are implemented.");
StringBuilder result = new StringBuilder(original.Length);
int currentPos = 0;
int nextMatch = original.IndexOf(pattern, comparisonType);
while (nextMatch >= 0) {
result.Append(original, currentPos, nextMatch - currentPos);
// The following line restricts this method to ordinal comparisons:
// for non-ordinal comparisons, the match length might be different than the pattern length.
currentPos = nextMatch + pattern.Length;
result.Append(replacement);
nextMatch = original.IndexOf(pattern, currentPos, comparisonType);
}
result.Append(original, currentPos, original.Length - currentPos);
return result.ToString();
}
}
}

Loading…
Cancel
Save