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 2011/06/24 19:26:23 UTC
svn commit: r1139414 - in /incubator/npanday/trunk/dotnet/assemblies:
NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/
NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/...
Author: brett
Date: Fri Jun 24 19:26:22 2011
New Revision: 1139414
URL: http://svn.apache.org/viewvc?rev=1139414&view=rev
Log:
[NPANDAY-445] find the reference for the correct target framework
also split RSP code from GAC code and other refactoring
Added:
incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/RspUtility.cs
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/AbstractPomConverter.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/NormalPomConverter.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/WebPomConverter.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/WebProjectDigestAlgorithm.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Model/Reference.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday.Utils.csproj
incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/GacUtility.cs
incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/PomHelperUtility.cs
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/AbstractPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/AbstractPomConverter.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/AbstractPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/AbstractPomConverter.cs Fri Jun 24 19:26:22 2011
@@ -40,6 +40,7 @@ namespace NPanday.ProjectImporter.Conver
public abstract class AbstractPomConverter : IPomConverter
{
protected GacUtility gacUtil;
+ protected RspUtility rspUtil;
protected ArtifactContext artifactContext;
protected List<Artifact.Artifact> localArtifacts;
protected string mainPomFile;
@@ -76,6 +77,7 @@ namespace NPanday.ProjectImporter.Conver
this.groupId = FilterID(groupId);
this.version = parent != null ? parent.version : null;
+ this.rspUtil = new RspUtility();
this.gacUtil = new GacUtility();
this.model = new NPanday.Model.Pom.Model();
@@ -472,7 +474,7 @@ namespace NPanday.ProjectImporter.Conver
|| "dotnet-library".Equals(refDependency.type, StringComparison.OrdinalIgnoreCase)))
{
// ignore gac if already in the RSP
- if (gacUtil.IsRspIncluded(refDependency.artifactId, projectDigest.Language))
+ if (rspUtil.IsRspIncluded(refDependency.artifactId, projectDigest.Language))
{
return;
}
@@ -747,20 +749,25 @@ namespace NPanday.ProjectImporter.Conver
return dependency;
}
-
+ List<string> refs = gacUtil.GetAssemblyInfo(reference.Name, null, projectDigest.Platform);
// resolve from GAC
- if (!string.IsNullOrEmpty(gacUtil.GetAssemblyInfo(reference.Name, null, projectDigest.Platform)))
+ if (refs.Count > 0)
{
// Assembly is found at the gac
+ //exclude ProcessArchitecture when loading assembly on a non-32 bit machine
+ refs = gacUtil.GetAssemblyInfo(reference.Name, reference.Version, null);
+
+ System.Reflection.Assembly a = System.Reflection.Assembly.ReflectionOnlyLoad(new System.Reflection.AssemblyName(refs[0]).FullName);
+
Dependency refDependency = new Dependency();
refDependency.artifactId = reference.Name;
refDependency.groupId = reference.Name;
if ("MSIL".Equals(reference.ProcessorArchitecture, StringComparison.OrdinalIgnoreCase))
{
- if ("4.0.0.0".Equals(reference.Version))
+ if (a.ImageRuntimeVersion.StartsWith("v4.0"))
{
refDependency.type = "gac_msil4";
}
@@ -771,7 +778,7 @@ namespace NPanday.ProjectImporter.Conver
}
else if ("x86".Equals(reference.ProcessorArchitecture, StringComparison.OrdinalIgnoreCase))
{
- if ("4.0.0.0".Equals(reference.Version))
+ if (a.ImageRuntimeVersion.StartsWith("v4.0"))
{
refDependency.type = "gac_32_4";
}
@@ -783,7 +790,7 @@ namespace NPanday.ProjectImporter.Conver
else if ("IA64".Equals(reference.ProcessorArchitecture, StringComparison.OrdinalIgnoreCase) ||
"AMD64".Equals(reference.ProcessorArchitecture, StringComparison.OrdinalIgnoreCase))
{
- if ("4.0.0.0".Equals(reference.Version))
+ if (a.ImageRuntimeVersion.StartsWith("v4.0"))
{
refDependency.type = "gac_64_4";
}
@@ -796,7 +803,7 @@ namespace NPanday.ProjectImporter.Conver
//Assemblies that with null ProcessorArchitecture esp ASP.net assmblies (e.g MVC)
else if ((reference.ProcessorArchitecture == null) && ("31bf3856ad364e35".Equals(reference.PublicKeyToken.ToLower(), StringComparison.OrdinalIgnoreCase)))
{
- if ("4.0.0.0".Equals(reference.Version))
+ if (a.ImageRuntimeVersion.StartsWith("v4.0"))
{
refDependency.type = "gac_msil4";
}
@@ -805,7 +812,6 @@ namespace NPanday.ProjectImporter.Conver
refDependency.type = "gac_msil";
}
}
-
else
{
refDependency.type = "gac";
@@ -813,9 +819,6 @@ namespace NPanday.ProjectImporter.Conver
refDependency.version = reference.Version ?? "1.0.0.0";
- //exclude ProcessArchitecture when loading assembly on a non-32 bit machine
- System.Reflection.Assembly a = System.Reflection.Assembly.Load(new System.Reflection.AssemblyName(gacUtil.GetAssemblyInfo(reference.Name, reference.Version, null)).FullName);
-
if (reference.PublicKeyToken != null)
{
refDependency.classifier = reference.PublicKeyToken;
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/NormalPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/NormalPomConverter.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/NormalPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/NormalPomConverter.cs Fri Jun 24 19:26:22 2011
@@ -241,7 +241,7 @@ namespace NPanday.ProjectImporter.Conver
{
if (!string.IsNullOrEmpty(projectDigest.Language))
{
- if (!gacUtil.IsRspIncluded(reference.Name, projectDigest.Language))
+ if (!rspUtil.IsRspIncluded(reference.Name, projectDigest.Language))
{
list.Add(reference);
}
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/WebPomConverter.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/WebPomConverter.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/WebPomConverter.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Converter/Algorithms/WebPomConverter.cs Fri Jun 24 19:26:22 2011
@@ -186,7 +186,7 @@ namespace NPanday.ProjectImporter.Conver
|| "dotnet-library".Equals(refDependency.type, StringComparison.OrdinalIgnoreCase)))
{
// ignore gac if already in the RSP
- if (gacUtil.IsRspIncluded(refDependency.artifactId, projectDigest.Language))
+ if (rspUtil.IsRspIncluded(refDependency.artifactId, projectDigest.Language))
{
return;
}
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/NormalProjectDigestAlgorithm.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/NormalProjectDigestAlgorithm.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/NormalProjectDigestAlgorithm.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/NormalProjectDigestAlgorithm.cs Fri Jun 24 19:26:22 2011
@@ -20,7 +20,9 @@
#endregion
using System;
using System.Collections.Generic;
+using System.Collections;
using System.IO;
+using System.Reflection;
using Microsoft.Build.BuildEngine;
using NPanday.ProjectImporter.Parser.VisualStudioProjectTypes;
using NPanday.ProjectImporter.Digest.Model;
@@ -55,9 +57,6 @@ namespace NPanday.ProjectImporter.Digest
}
}
- GacUtility gac = new GacUtility();
-
-
ProjectDigest projectDigest = new ProjectDigest();
string projectBasePath = Path.GetDirectoryName(project.FullFileName);
projectDigest.ProjectType = (VisualStudioProjectTypeEnum)projectMap["ProjectType"];
@@ -113,7 +112,7 @@ namespace NPanday.ProjectImporter.Digest
List<ComReference> comReferenceList = new List<ComReference>();
DigestBuildProperties(project, projectDigest);
- DigestBuildItems(project, projectDigest, projectBasePath, projectReferences, gac, references, compiles, nones, webReferenceUrls, contents, folders, webReferencesList, embeddedResources, bootstrapperPackages, globalNamespaceImports, comReferenceList);
+ DigestBuildItems(project, projectDigest, projectBasePath, projectReferences, references, compiles, nones, webReferenceUrls, contents, folders, webReferencesList, embeddedResources, bootstrapperPackages, globalNamespaceImports, comReferenceList);
DigestImports(project);
projectDigest.ProjectReferences = projectReferences.ToArray();
@@ -165,8 +164,11 @@ namespace NPanday.ProjectImporter.Digest
}
}
- private static void DigestBuildItems(Project project, ProjectDigest projectDigest, string projectBasePath, ICollection<ProjectReference> projectReferences, GacUtility gac, ICollection<Reference> references, ICollection<Compile> compiles, ICollection<None> nones, ICollection<WebReferenceUrl> webReferenceUrls, ICollection<Content> contents, ICollection<Folder> folders, ICollection<WebReferences> webReferencesList, ICollection<EmbeddedResource> embeddedResources, ICollection<BootstrapperPackage> bootstrapperPackages, ICollection<string> globalNamespaceImports, IList<ComReference> comReferenceList)
+ private static void DigestBuildItems(Project project, ProjectDigest projectDigest, string projectBasePath, ICollection<ProjectReference> projectReferences, ICollection<Reference> references, ICollection<Compile> compiles, ICollection<None> nones, ICollection<WebReferenceUrl> webReferenceUrls, ICollection<Content> contents, ICollection<Folder> folders, ICollection<WebReferences> webReferencesList, ICollection<EmbeddedResource> embeddedResources, ICollection<BootstrapperPackage> bootstrapperPackages, ICollection<string> globalNamespaceImports, IList<ComReference> comReferenceList)
{
+ string targetFramework = projectDigest.TargetFramework != null ? projectDigest.TargetFramework.Substring(0,3) : "2.0";
+ GacUtility gac = new GacUtility();
+ RspUtility rsp = new RspUtility();
foreach (BuildItemGroup buildItemGroup in project.ItemGroups)
{
foreach (BuildItem buildItem in buildItemGroup)
@@ -183,7 +185,7 @@ namespace NPanday.ProjectImporter.Digest
projectReferences.Add(prjRef);
break;
case "Reference":
- Reference reference = new Reference(projectBasePath, gac);
+ Reference reference = new Reference(projectBasePath);
//set processorArchitecture property to platform, it will be used by GacUtility in
// order to resolve artifact to right processor architecture
if (!string.IsNullOrEmpty(projectDigest.Platform))
@@ -201,7 +203,39 @@ namespace NPanday.ProjectImporter.Digest
}
if (string.IsNullOrEmpty(reference.HintPath) || !(new FileInfo(reference.HintPath).Exists))
{
- reference.AssemblyInfo = buildItem.Include;
+ if (buildItem.Include.Contains(","))
+ {
+ // complete name
+ reference.SetAssemblyInfoValues(buildItem.Include);
+ }
+ else if (!rsp.IsRspIncluded(buildItem.Include,projectDigest.Language))
+ {
+ // simple name needs to be resolved
+ List<string> refs = gac.GetAssemblyInfo(buildItem.Include, null, null);
+ if (refs.Count == 0)
+ {
+ Console.WriteLine("Unable to find reference '" + buildItem.Include + "' in " + string.Join("; ", refs.ToArray()));
+ }
+ else
+ {
+ if (refs.Count > 1)
+ {
+ string best = null;
+ string bestFramework = "0.0";
+ foreach (string s in refs)
+ {
+ Assembly a = Assembly.ReflectionOnlyLoad(s);
+ string framework = a.ImageRuntimeVersion.Substring(1,3);
+ if (framework.CompareTo(targetFramework) <= 0 && framework.CompareTo(bestFramework) > 0)
+ {
+ best = s;
+ bestFramework = framework;
+ }
+ }
+ reference.SetAssemblyInfoValues(best);
+ }
+ }
+ }
}
if ("NUnit.Framework".Equals(reference.Name, StringComparison.OrdinalIgnoreCase))
{
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/WebProjectDigestAlgorithm.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/WebProjectDigestAlgorithm.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/WebProjectDigestAlgorithm.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Algorithms/WebProjectDigestAlgorithm.cs Fri Jun 24 19:26:22 2011
@@ -40,8 +40,6 @@ namespace NPanday.ProjectImporter.Digest
{
public ProjectDigest DigestProject(Dictionary<string, object> projectMap)
{
- GacUtility gac = new GacUtility();
-
ProjectDigest projectDigest = new ProjectDigest();
projectDigest.ProjectType = (VisualStudioProjectTypeEnum)projectMap["ProjectType"];
projectDigest.FullFileName = projectMap["ProjectFullPath"].ToString();
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Model/Reference.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Model/Reference.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Model/Reference.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/NPanday/ProjectImporter/Digest/Model/Reference.cs Fri Jun 24 19:26:22 2011
@@ -39,30 +39,15 @@ namespace NPanday.ProjectImporter.Digest
{
#region Constructors
- public Reference(string projectBasePath, GacUtility gac)
+ public Reference(string projectBasePath)
: base(projectBasePath)
{
- this.gac = gac;
}
#endregion
#region Properties
- private GacUtility gac;
- public GacUtility GacUtility
- {
- get
- {
- if (gac == null)
- {
- gac = new GacUtility();
- }
-
- return gac;
- }
- }
-
private string name;
public string Name
{
@@ -106,21 +91,6 @@ namespace NPanday.ProjectImporter.Digest
}
}
- public string AssemblyInfo
- {
- set
- {
- if (value.Split(',').Length > 1)
- {
- SetAssemblyInfoValues(value);
- }
- else
- {
- SetAssemblyValuesFromGac(value);
- }
- }
- }
-
private string version;
public string Version
{
@@ -512,11 +482,9 @@ namespace NPanday.ProjectImporter.Digest
public static string Tokenize(string id)
{
return id.Replace(".",Path.DirectorySeparatorChar.ToString());
- }
-
+ }
-
- private void SetAssemblyInfoValues(string assemblyInfo)
+ public void SetAssemblyInfoValues(string assemblyInfo)
{
if (!string.IsNullOrEmpty(assemblyInfo))
{
@@ -550,15 +518,6 @@ namespace NPanday.ProjectImporter.Digest
}
-
-
- private void SetAssemblyValuesFromGac(string name)
- {
- this.Name = name.Split(',')[0].Trim();
- string str = GacUtility.GetAssemblyInfo(this.Name, version, processorArchitecture);
- SetAssemblyInfoValues(str);
- }
-
#endregion
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday.Utils.csproj
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday.Utils.csproj?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday.Utils.csproj (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday.Utils.csproj Fri Jun 24 19:26:22 2011
@@ -66,6 +66,7 @@ under the License.
<Compile Include="NPanday\Utils\MavenRunner.cs" />
<Compile Include="NPanday\Utils\PomHelperUtility.cs" />
<Compile Include="NPanday\Utils\RepositoryUtility.cs" />
+ <Compile Include="NPanday\Utils\RspUtility.cs" />
</ItemGroup>
<ItemGroup />
<ItemGroup />
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/GacUtility.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/GacUtility.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/GacUtility.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/GacUtility.cs Fri Jun 24 19:26:22 2011
@@ -20,6 +20,7 @@
#endregion
using System;
using System.Collections.Generic;
+using System.Collections;
using System.Text;
using System.Diagnostics;
@@ -34,14 +35,15 @@ namespace NPanday.Utils
public class GacUtility
{
private string gacs = "";
- private string vbRsp = "";
- private string csRsp = "";
public GacUtility()
{
// Used to determine which references exist in the GAC, used during VS project import
// TODO: we need a better way to determine this by querying the GAC using .NET
// rather than parsing command output
+ // consider this: http://www.codeproject.com/KB/dotnet/undocumentedfusion.aspx
+ // (works, but seems to be missing the processor architecture)
+
Process p = new Process();
try
@@ -66,40 +68,18 @@ namespace NPanday.Utils
{
throw new Exception( "Unable to execute gacutil - check that your PATH has been set correctly (Message: " + exception.Message + ")" );
}
-
-
- string msBuildPath = Path.GetDirectoryName(System.Reflection.Assembly.GetAssembly(typeof(string)).Location);
- string f35 = Path.GetFullPath(Environment.SystemDirectory + @"\..\Microsoft.NET\Framework\v3.5");
- string f4 = Path.GetFullPath(Environment.SystemDirectory + @"\..\Microsoft.NET\Framework\v4.0.30319");
- if (Directory.Exists(f4))
- {
- msBuildPath = f4;
- }
- try
- {
- csRsp = File.OpenText(msBuildPath + @"\csc.rsp").ReadToEnd();
- }
- catch (Exception){}
-
-
- try
- {
- vbRsp = File.OpenText(msBuildPath + @"\vbc.rsp").ReadToEnd();
- }
- catch (Exception){}
-
-
-
}
- public string GetAssemblyInfo(string assemblyName, string version, string processorArchitecture)
+ public List<string> GetAssemblyInfo(string assemblyName, string version, string processorArchitecture)
{
if (string.IsNullOrEmpty(assemblyName))
{
return null;
}
+ List<string> results = new List<string>();
+
string architecture = String.Empty;
if (! string.IsNullOrEmpty(processorArchitecture))
{
@@ -121,66 +101,9 @@ namespace NPanday.Utils
foreach (Match match in matches)
{
- return match.Value.Trim();
- }
-
-
- return null;
- }
-
- public bool IsRspIncluded(string assemblyName, string language)
- {
- if ("vb".Equals(language, StringComparison.OrdinalIgnoreCase))
- {
- return IsVbcRspIncluded(assemblyName);
- }
- else
- {
- return IsCscRspIncluded(assemblyName);
- }
- }
-
-
-
- public bool IsCscRspIncluded(string assemblyName)
- {
- if (string.IsNullOrEmpty(assemblyName))
- {
- return false;
- }
-
- Regex regex = new Regex(@"\s*/r:" + assemblyName + @"\.dll", RegexOptions.IgnoreCase);
- MatchCollection matches = regex.Matches(csRsp);
-
-
- foreach (Match match in matches)
- {
- return true;
- }
-
-
- return false;
- }
-
-
- public bool IsVbcRspIncluded(string assemblyName)
- {
- if (string.IsNullOrEmpty(assemblyName))
- {
- return false;
- }
-
- Regex regex = new Regex(@"\s*/r:" + assemblyName + @"\.dll", RegexOptions.IgnoreCase);
- MatchCollection matches = regex.Matches(csRsp);
-
-
- foreach (Match match in matches)
- {
- return true;
+ results.Add(match.Value.Trim());
}
-
-
- return false;
+ return results;
}
private static string GetRegexProcessorArchitectureFromString(string input)
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/PomHelperUtility.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/PomHelperUtility.cs?rev=1139414&r1=1139413&r2=1139414&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/PomHelperUtility.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/PomHelperUtility.cs Fri Jun 24 19:26:22 2011
@@ -43,7 +43,7 @@ namespace NPanday.Utils
private FileInfo pom;
public bool isWebRefEmpty = false;
- GacUtility gacUtil = new GacUtility();
+ RspUtility rspUtil = new RspUtility();
public PomHelperUtility(Solution solution, Project project)
{
@@ -814,12 +814,12 @@ namespace NPanday.Utils
if ("vb".Equals(NPandayCompilerPluginLanguage))
{
- if (gacUtil.IsVbcRspIncluded(dependency.artifactId))
+ if (rspUtil.IsVbcRspIncluded(dependency.artifactId))
return;
}
else
{
- if (gacUtil.IsCscRspIncluded((dependency.artifactId)))
+ if (rspUtil.IsCscRspIncluded((dependency.artifactId)))
return;
}
if (IsPomDependency(dependency))
Added: incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/RspUtility.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/RspUtility.cs?rev=1139414&view=auto
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/RspUtility.cs (added)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.Utils/src/main/csharp/NPanday/Utils/RspUtility.cs Fri Jun 24 19:26:22 2011
@@ -0,0 +1,113 @@
+#region Apache License, Version 2.0
+//
+// Licensed to the Apache Software Foundation (ASF) under one
+// or more contributor license agreements. See the NOTICE file
+// distributed with this work for additional information
+// regarding copyright ownership. The ASF licenses this file
+// to you under the Apache License, Version 2.0 (the
+// "License"); you may not use this file except in compliance
+// with the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing,
+// software distributed under the License is distributed on an
+// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+// KIND, either express or implied. See the License for the
+// specific language governing permissions and limitations
+// under the License.
+//
+#endregion
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.IO;
+using System.Text.RegularExpressions;
+
+namespace NPanday.Utils
+{
+ public class RspUtility
+ {
+ private string vbRsp = "";
+ private string csRsp = "";
+
+ public RspUtility()
+ {
+ string msBuildPath = Path.GetDirectoryName(System.Reflection.Assembly.GetAssembly(typeof(string)).Location);
+ string f35 = Path.GetFullPath(Environment.SystemDirectory + @"\..\Microsoft.NET\Framework\v3.5");
+ string f4 = Path.GetFullPath(Environment.SystemDirectory + @"\..\Microsoft.NET\Framework\v4.0.30319");
+ if (Directory.Exists(f4))
+ {
+ msBuildPath = f4;
+ }
+ try
+ {
+ csRsp = File.OpenText(msBuildPath + @"\csc.rsp").ReadToEnd();
+ }
+ catch (Exception) { }
+
+
+ try
+ {
+ vbRsp = File.OpenText(msBuildPath + @"\vbc.rsp").ReadToEnd();
+ }
+ catch (Exception) { }
+ }
+
+
+ public bool IsRspIncluded(string assemblyName, string language)
+ {
+ if ("vb".Equals(language, StringComparison.OrdinalIgnoreCase))
+ {
+ return IsVbcRspIncluded(assemblyName);
+ }
+ else
+ {
+ return IsCscRspIncluded(assemblyName);
+ }
+ }
+
+
+
+ public bool IsCscRspIncluded(string assemblyName)
+ {
+ if (string.IsNullOrEmpty(assemblyName))
+ {
+ return false;
+ }
+
+ Regex regex = new Regex(@"\s*/r:" + assemblyName + @"\.dll", RegexOptions.IgnoreCase);
+ MatchCollection matches = regex.Matches(csRsp);
+
+
+ foreach (Match match in matches)
+ {
+ return true;
+ }
+
+
+ return false;
+ }
+
+
+ public bool IsVbcRspIncluded(string assemblyName)
+ {
+ if (string.IsNullOrEmpty(assemblyName))
+ {
+ return false;
+ }
+
+ Regex regex = new Regex(@"\s*/r:" + assemblyName + @"\.dll", RegexOptions.IgnoreCase);
+ MatchCollection matches = regex.Matches(csRsp);
+
+
+ foreach (Match match in matches)
+ {
+ return true;
+ }
+
+
+ return false;
+ }
+ }
+}