You are viewing a plain text version of this content. The canonical link for it is here.
Posted to npanday-commits@incubator.apache.org by br...@apache.org on 2013/03/07 09:35:27 UTC

svn commit: r1453743 - /incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs

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