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 2014/02/26 15:03:21 UTC
svn commit: r1572077 -
/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs
Author: brett
Date: Wed Feb 26 15:03:20 2014
New Revision: 1572077
URL: http://svn.apache.org/r1572077
Log:
workaround an issue where projects fail to import
Modified:
incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs
Modified: incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs
URL: http://svn.apache.org/viewvc/incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs?rev=1572077&r1=1572076&r2=1572077&view=diff
==============================================================================
--- incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs (original)
+++ incubator/npanday/trunk/dotnet/assemblies/NPanday.ProjectImporter/Engine/src/main/csharp/Parser/SlnParser/ProjectSolutionParser.cs Wed Feb 26 15:03:20 2014
@@ -30,6 +30,7 @@ using Microsoft.Build.BuildEngine;
using System.Xml;
using System.Windows.Forms;
using log4net;
+using System.Xml.Xsl;
/// Author: Leopoldo Lee Agdeppa III
@@ -156,14 +157,23 @@ namespace NPanday.ProjectImporter.Parser
// This may have been mitigated by setting VisualStudioVersion and can be removed if the problem doesn't re-appear.
if (log.IsDebugEnabled)
{
- log.DebugFormat("VisualStudioVersion: global {0}, evaluated {1}",
+ log.DebugFormat("VisualStudioVersion: global {0}, evaluated {1}",
prj.GlobalProperties["VisualStudioVersion"], prj.EvaluatedProperties["VisualStudioVersion"]);
log.DebugFormat("CloudExtensionsDir: global {0}, evaluated {1}",
prj.GlobalProperties["CloudExtensionsDir"], prj.EvaluatedProperties["CloudExtensionsDir"]);
+ log.DebugFormat("MSBuildExtensionsPath: global {0}, evaluated {1}",
+ prj.GlobalProperties["MSBuildExtensionsPath"], prj.EvaluatedProperties["MSBuildExtensionsPath"]);
}
prj.Load(fullpath);
}
+ catch (NullReferenceException e)
+ {
+ log.Error("Error reading project from path " + fullpath, e);
+ // workaround it by removing the imports
+ prj.LoadXml(TransformProjectFile(fullpath));
+ prj.FullFileName = fullpath;
+ }
catch (Exception e)
{
log.Error("Error reading project from path " + fullpath, e);
@@ -193,7 +203,24 @@ namespace NPanday.ProjectImporter.Parser
return list;
}
-
+ private string TransformProjectFile(string fullpath)
+ {
+ XslCompiledTransform transform = new XslCompiledTransform();
+ transform.Load(XmlReader.Create(new StringReader(
+ @"<?xml version='1.0' encoding='ISO-8859-1'?>
+<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform' xmlns:msbuild='http://schemas.microsoft.com/developer/msbuild/2003'>
+ <xsl:template match='@*|node()'>
+ <xsl:copy>
+ <xsl:apply-templates select='@*|node()'/>
+ </xsl:copy>
+ </xsl:template>
+ <xsl:template match='msbuild:Import[@Project != """"]'/>
+</xsl:stylesheet>" )));
+ StringWriter w = new StringWriter();
+ transform.Transform(fullpath, XmlWriter.Create(w));
+ log.DebugFormat("Project XML: {0}", w.ToString());
+ return w.ToString();
+ }
protected void ParseProjectReferences(Dictionary<string, object> dictionary, NPanday.ProjectImporter.Parser.SlnParser.Model.Project project, NPanday.ProjectImporter.Parser.SlnParser.Model.Solution solution)
{