Author: brett
Date: Thu Mar  7 09:35:26 2013
New Revision: 1453743

URL: http://svn.apache.org/r1453743
Log:
[NPANDAY-578] ensure correct search order of AssemblyFoldersEx

Include other framework versions for v4.0 if they haven't previously been
encountered, and check the version to ensure the right product is picked up
(e.g. Azure libraries).

Modified:
    
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs

Modified: 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
URL: 
http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs?rev=1453743&r1=1453742&r2=1453743&view=diff
==============================================================================
--- 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
 (original)
+++ 
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
 Thu Mar  7 09:35:26 2013
@@ -816,15 +816,15 @@ namespace NPanday.ProjectImporter.Conver
             {
                 GetTargetFrameworkDirectoriesAssemblyFoldersEx(directories, 
root.OpenSubKey("v4.0.30319\\AssemblyFoldersEx"));
             }
-            if (projectDigest.TargetFrameworkVersion == "v3.5")
+            if (projectDigest.TargetFrameworkVersion == "v4.0" || 
projectDigest.TargetFrameworkVersion == "v3.5")
             {
                 GetTargetFrameworkDirectoriesAssemblyFoldersEx(directories, 
root.OpenSubKey("v3.5\\AssemblyFoldersEx"));
             }
-            if (projectDigest.TargetFrameworkVersion == "v3.5" || 
projectDigest.TargetFrameworkVersion == "v3.0")
+            if (projectDigest.TargetFrameworkVersion == "v4.0" || 
projectDigest.TargetFrameworkVersion == "v3.5" || 
projectDigest.TargetFrameworkVersion == "v3.0")
             {
                 GetTargetFrameworkDirectoriesAssemblyFoldersEx(directories, 
root.OpenSubKey("v3.0\\AssemblyFoldersEx"));
             }
-            if (projectDigest.TargetFrameworkVersion == "v3.5" || 
projectDigest.TargetFrameworkVersion == "v3.0" || 
projectDigest.TargetFrameworkVersion == "v2.0")
+            if (projectDigest.TargetFrameworkVersion == "v4.0" || 
projectDigest.TargetFrameworkVersion == "v3.5" || 
projectDigest.TargetFrameworkVersion == "v3.0" || 
projectDigest.TargetFrameworkVersion == "v2.0")
             {
                 GetTargetFrameworkDirectoriesAssemblyFoldersEx(directories, 
root.OpenSubKey("v2.0.50727\\AssemblyFoldersEx"));
             }
@@ -845,7 +845,10 @@ namespace NPanday.ProjectImporter.Conver
                     if (v != null)
                     {
                         // strip non-alphanumeric characters to make a property
-                        targetFrameworkDirectories.Add(new 
Regex("[^A-Za-z0-9]").Replace(key, ""), v);
+                        string k = new Regex("[^A-Za-z0-9]").Replace(key, "");
+                        // ignore duplicates, we add in decreasing priority 
already
+                        if (!targetFrameworkDirectories.ContainsKey(k))
+                            targetFrameworkDirectories.Add(k, v);
                     }
                 }
             }
@@ -859,6 +862,14 @@ namespace NPanday.ProjectImporter.Conver
                 string path = Path.Combine(directory, reference.Name + ".dll");
                 if (File.Exists(path))
                 {
+                    // check that it is the right version, if a version was 
required
+                    if (!string.IsNullOrEmpty(reference.Version))
+                    {
+                        Version v = 
System.Reflection.AssemblyName.GetAssemblyName(path).Version;
+                        if (!v.ToString().Equals(reference.Version))
+                            continue;
+                    }
+
                     // Note that a "provided" scope may be more appropriate 
here, if NPanday were to support it
                     // This could likewise replace the GAC types as all of 
that lookup should occur at build time
 


Reply via email to