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/02 01:34:44 UTC

svn commit: r1451812 - in /incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src: main/csharp/Converter/Algorithms/ main/csharp/Digest/Model/ test/resource/MvcApplication1/MvcApplication1/ test/resource/NPANDAY-445-NET40GAC/NPAND...

Author: brett
Date: Sat Mar  2 01:34:44 2013
New Revision: 1451812

URL: http://svn.apache.org/r1451812
Log:
[NPDANY-578] support for AssemblyFoldersEx resolution

Modified:
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/AbstractPomConverter.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/MvcApplication1/MvcApplication1/pom.test
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY-445-NET40GAC/NPANDAY-445-NET40GAC/pom.test
    incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY_571/WorkerRole1/pom.test

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=1451812&r1=1451811&r2=1451812&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 Sat Mar  2 01:34:44 2013
@@ -28,6 +28,8 @@ using NPanday.Artifact;
 using NPanday.Model.Pom;
 using NPanday.ProjectImporter.Digest.Model;
 using NPanday.Utils;
+using Microsoft.Win32;
+using System.Text.RegularExpressions;
 
 /// Author: Leopoldo Lee Agdeppa III
 
@@ -763,6 +765,7 @@ namespace NPanday.ProjectImporter.Conver
             //  - Files from artifact repository
             //  - The hintpath (step 3 above)
             //  - The target framework directories (step 4 above)
+            //  - The registered assembly directories (step 5 above)
             //  - The GAC (step 7 above)
 
             Dependency refDependency;
@@ -776,7 +779,11 @@ namespace NPanday.ProjectImporter.Conver
 
             // resolve from target framework directories
             if (refDependency == null)
-                refDependency = ResolveDependencyFromTargetFrameworkDirectories(reference);
+                refDependency = ResolveDependencyFromDirectories(reference, GetTargetFrameworkDirectories());
+
+            // resolve from registered assembly directories
+            if (refDependency == null)
+                refDependency = ResolveDependencyFromDirectories(reference, GetTargetFrameworkAssemblyFoldersEx());
 
             // resolve from GAC
             if (refDependency == null)
@@ -788,11 +795,44 @@ namespace NPanday.ProjectImporter.Conver
             return refDependency;
         }
 
-        private Dependency ResolveDependencyFromTargetFrameworkDirectories(Reference reference)
+        private Dictionary<string,string> GetTargetFrameworkAssemblyFoldersEx()
+        {
+            Dictionary<string,string> directories = new Dictionary<string,string>();
+
+            RegistryKey root = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\" + projectDigest.TargetFrameworkIdentifier);
+            bool found = false;
+            foreach (string key in root.GetSubKeyNames())
+            {
+                if (key.StartsWith(projectDigest.TargetFrameworkVersion))
+                {
+                    RegistryKey assemblyFolderEx = root.OpenSubKey(key + "\\AssemblyFoldersEx");
+                    GetTargetFrameworkDirectoriesAssemblyFoldersEx(directories, assemblyFolderEx);
+                    found = true;
+                }
+            }
+
+            if (!found)
+                log.WarnFormat("No AssemblyFoldersEx registry key found for {0} {1}", projectDigest.TargetFrameworkIdentifier, projectDigest.TargetFrameworkVersion);
+
+            return directories;
+        }
+
+        protected static void GetTargetFrameworkDirectoriesAssemblyFoldersEx(Dictionary<string, string> targetFrameworkDirectories, RegistryKey assemblyFolderEx)
         {
-            Dictionary<string,string> directories = GetTargetFrameworkDirectories();
+            foreach (string key in assemblyFolderEx.GetSubKeyNames())
+            {
+                string v = (string)assemblyFolderEx.OpenSubKey(key).GetValue(null);
+                if (v != null)
+                {
+                    // strip non-alphanumeric characters to make a property
+                    targetFrameworkDirectories.Add(new Regex("[^A-Za-z0-9]").Replace(key, ""), v);
+                }
+            }
+        }
 
-            foreach (KeyValuePair<string,string> entry in directories)
+        private Dependency ResolveDependencyFromDirectories(Reference reference, Dictionary<string, string> directories)
+        {
+            foreach (KeyValuePair<string, string> entry in directories)
             {
                 string directory = entry.Value;
                 string path = Path.Combine(directory, reference.Name + ".dll");

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs?rev=1451812&r1=1451811&r2=1451812&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Converter/Algorithms/SilverlightPomConverter.cs Sat Mar  2 01:34:44 2013
@@ -26,7 +26,6 @@ using System.Collections.Generic;
 using log4net;
 using Microsoft.Win32;
 using System;
-using System.Text.RegularExpressions;
 
 namespace NPanday.ProjectImporter.Converter.Algorithms
 {
@@ -123,15 +122,7 @@ namespace NPanday.ProjectImporter.Conver
                         log.Warn("Unable to find Silverlight framework in registry");
 
                     RegistryKey assemblyFolderEx = root.OpenSubKey("AssemblyFoldersEx");
-                    foreach (string key in assemblyFolderEx.GetSubKeyNames())
-                    {
-                        string v = (string)assemblyFolderEx.OpenSubKey(key).GetValue(null);
-                        if (v != null)
-                        {
-                            // strip non-alphanumeric characters to make a property
-                            targetFrameworkDirectories.Add(new Regex("[^A-Za-z0-9]").Replace(key, ""), v);
-                        }
-                    }
+                    GetTargetFrameworkDirectoriesAssemblyFoldersEx(targetFrameworkDirectories, assemblyFolderEx);
                 }
                 catch (Exception e)
                 {

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs?rev=1451812&r1=1451811&r2=1451812&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Digest/Model/ProjectDigest.cs Sat Mar  2 01:34:44 2013
@@ -586,7 +586,7 @@ namespace NPanday.ProjectImporter.Digest
             set { cloudConfig = value; }
         }
 
-        private string targetFrameworkIdentifier;
+        private string targetFrameworkIdentifier = ".NETFramework";
         public string TargetFrameworkIdentifier
         {
             get { return targetFrameworkIdentifier; }

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/MvcApplication1/MvcApplication1/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/MvcApplication1/MvcApplication1/pom.test?rev=1451812&r1=1451811&r2=1451812&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/MvcApplication1/MvcApplication1/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/MvcApplication1/MvcApplication1/pom.test Sat Mar  2 01:34:44 2013
@@ -70,22 +70,25 @@
       <groupId>System.Web.Mvc</groupId>
       <artifactId>System.Web.Mvc</artifactId>
       <version>3.0.0.0</version>
-      <type>gac_msil4</type>
-      <classifier>31bf3856ad364e35</classifier>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.ASPNETMVC3}/System.Web.Mvc.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>System.Web.WebPages</groupId>
       <artifactId>System.Web.WebPages</artifactId>
       <version>1.0.0.0</version>
-      <type>gac_msil4</type>
-      <classifier>31bf3856ad364e35</classifier>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.ASPNETWebPages}/System.Web.WebPages.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>System.Web.Helpers</groupId>
       <artifactId>System.Web.Helpers</artifactId>
       <version>1.0.0.0</version>
-      <type>gac_msil4</type>
-      <classifier>31bf3856ad364e35</classifier>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.ASPNETWebPages}/System.Web.Helpers.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>System.Web.DynamicData</groupId>
@@ -138,5 +141,7 @@
   </dependencies>
   <properties>
     <npanday.Framework40>C:\Windows\Microsoft.NET\Framework\v4.0.30319</npanday.Framework40>
+    <npanday.ASPNETMVC3>c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\</npanday.ASPNETMVC3>
+    <npanday.ASPNETWebPages>c:\Program Files\Microsoft ASP.NET\ASP.NET Web Pages\v1.0\Assemblies\</npanday.ASPNETWebPages>
   </properties>
 </project>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY-445-NET40GAC/NPANDAY-445-NET40GAC/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY-445-NET40GAC/NPANDAY-445-NET40GAC/pom.test?rev=1451812&r1=1451811&r2=1451812&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY-445-NET40GAC/NPANDAY-445-NET40GAC/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY-445-NET40GAC/NPANDAY-445-NET40GAC/pom.test Sat Mar  2 01:34:44 2013
@@ -49,11 +49,13 @@
       <groupId>System.Web.Mvc</groupId>
       <artifactId>System.Web.Mvc</artifactId>
       <version>2.0.0.0</version>
-      <type>gac_msil</type>
-      <classifier>31bf3856ad364e35</classifier>
+      <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.ASPNETMVC3}/System.Web.Mvc.dll</systemPath>
     </dependency>
   </dependencies>
   <properties>
     <npanday.Framework40>C:\Windows\Microsoft.NET\Framework\v4.0.30319</npanday.Framework40>
+    <npanday.ASPNETMVC3>c:\Program Files\Microsoft ASP.NET\ASP.NET MVC 3\Assemblies\</npanday.ASPNETMVC3>
   </properties>
 </project>

Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY_571/WorkerRole1/pom.test
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY_571/WorkerRole1/pom.test?rev=1451812&r1=1451811&r2=1451812&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY_571/WorkerRole1/pom.test (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/test/resource/NPANDAY_571/WorkerRole1/pom.test Sat Mar  2 01:34:44 2013
@@ -48,24 +48,33 @@
       <artifactId>Microsoft.WindowsAzure.Configuration</artifactId>
       <version>1.7.0.0</version>
       <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio}/Microsoft.WindowsAzure.Configuration.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>Microsoft.WindowsAzure.Diagnostics</groupId>
       <artifactId>Microsoft.WindowsAzure.Diagnostics</artifactId>
       <version>1.7.0.0</version>
       <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio}/Microsoft.WindowsAzure.Diagnostics.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>Microsoft.WindowsAzure.ServiceRuntime</groupId>
       <artifactId>Microsoft.WindowsAzure.ServiceRuntime</artifactId>
       <version>1.7.0.0</version>
       <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio}/Microsoft.WindowsAzure.ServiceRuntime.dll</systemPath>
+    </dependency>
     </dependency>
     <dependency>
       <groupId>Microsoft.WindowsAzure.StorageClient</groupId>
       <artifactId>Microsoft.WindowsAzure.StorageClient</artifactId>
       <version>1.7.0.0</version>
       <type>dotnet-library</type>
+      <scope>system</scope>
+      <systemPath>${npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio}/Microsoft.WindowsAzure.StorageClient.dll</systemPath>
     </dependency>
     <dependency>
       <groupId>System.Data.Services.Client</groupId>
@@ -77,6 +86,7 @@
     </dependency>
   </dependencies>
   <properties>
+    <npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio>C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\ref\</npanday.WindowsAzureLibrariesforNETv17NET40CacheclientReferenceAssembliesforVisualStudio>
     <npanday.Framework40>C:\Windows\Microsoft.NET\Framework\v4.0.30319</npanday.Framework40>
   </properties>
 </project>