@@ -10,22 +10,22 @@ namespace Rubberduck.VBEditor
10
10
/// </summary>
11
11
public struct QualifiedModuleName
12
12
{
13
- public static string GetProjectId ( IVBProject project )
13
+ public static Guid GetProjectId ( IVBProject project )
14
14
{
15
15
if ( project . IsWrappingNullReference )
16
16
{
17
- return string . Empty ;
17
+ return Guid . Empty ;
18
18
}
19
19
20
20
if ( string . IsNullOrEmpty ( project . HelpFile ) )
21
21
{
22
- project . HelpFile = project . GetHashCode ( ) . ToString ( ) ;
22
+ project . HelpFile = GetGuidFromHashCode ( project . GetHashCode ( ) ) . ToString ( ) ;
23
23
}
24
24
25
- return project . HelpFile ;
25
+ return new Guid ( project . HelpFile ) ;
26
26
}
27
27
28
- public static string GetProjectId ( IReference reference )
28
+ public static Guid GetProjectId ( IReference reference )
29
29
{
30
30
var projectName = reference . Name ;
31
31
return new QualifiedModuleName ( projectName , reference . FullPath , projectName ) . ProjectId ;
@@ -90,7 +90,7 @@ public QualifiedModuleName(string projectName, string projectPath, string compon
90
90
_projectName = projectName ;
91
91
_projectDisplayName = null ;
92
92
_projectPath = projectPath ;
93
- _projectId = string . Format ( "{0};{1}" , _projectName , _projectPath ) . GetHashCode ( ) . ToString ( ) ;
93
+ _projectId = GetGuidFromHashCode ( string . Format ( "{0};{1}" , _projectName , _projectPath ) . GetHashCode ( ) ) ;
94
94
_componentName = componentName ;
95
95
_component = null ;
96
96
_componentType = ComponentType . ComComponent ;
@@ -114,8 +114,8 @@ public QualifiedMemberName QualifyMemberName(string member)
114
114
private readonly int _contentHashCode ;
115
115
public int ContentHashCode { get { return _contentHashCode ; } }
116
116
117
- private readonly string _projectId ;
118
- public string ProjectId { get { return _projectId ; } }
117
+ private readonly Guid _projectId ;
118
+ public Guid ProjectId { get { return _projectId ; } }
119
119
120
120
private readonly string _componentName ;
121
121
public string ComponentName { get { return _componentName ?? string . Empty ; } }
@@ -209,5 +209,12 @@ public override bool Equals(object obj)
209
209
{
210
210
return ! a . Equals ( b ) ;
211
211
}
212
+
213
+ // Start all project IDs with the Rubberduck GUID as defined in AssemblyInfo.cs, add hashcode as last 12 bytes.
214
+ private const string ProjectGuidFormat = "E07C841C-14B4-4890-83E9-{0}" ;
215
+ public static Guid GetGuidFromHashCode ( int hash )
216
+ {
217
+ return new Guid ( string . Format ( ProjectGuidFormat , hash . ToString ( "X12" ) ) ) ;
218
+ }
212
219
}
213
220
}
0 commit comments