Skip to content

Commit

Permalink
Fixes #70
Browse files Browse the repository at this point in the history
  • Loading branch information
hvanbakel committed Apr 5, 2018
1 parent 3dd012c commit e9a2fdb
Show file tree
Hide file tree
Showing 4 changed files with 66 additions and 12 deletions.
3 changes: 2 additions & 1 deletion Project2015To2017/Definition/Project.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ public sealed class Project
public IReadOnlyList<XElement> AdditionalPropertyGroups { get; internal set; }
public IReadOnlyList<XElement> Imports { get; internal set; }
public IReadOnlyList<XElement> Targets { get; internal set; }
public IReadOnlyList<XElement> BuildEvents { get; internal set; }

public IReadOnlyList<string> TargetFrameworks { get; internal set; }
public IReadOnlyList<string> TargetFrameworks { get; internal set; }
public ApplicationType Type { get; internal set; }
public bool Optimize { get; internal set; }
public bool TreatWarningsAsErrors { get; internal set; }
Expand Down
1 change: 1 addition & 0 deletions Project2015To2017/ProjectPropertiesTransformation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ public Task TransformAsync(XDocument projectFile, DirectoryInfo projectFolder, P
}
}

definition.BuildEvents = propertyGroups.Elements().Where(x => x.Name == nsSys + "PostBuildEvent" || x.Name == nsSys + "PreBuildEvent").ToArray();
definition.AdditionalPropertyGroups = ReadAdditionalPropertyGroups(propertyGroups);
definition.Imports = projectFile.Element(nsSys + "Project").Elements(nsSys + "Import").Where(x =>
x.Attribute("Project")?.Value != @"$(MSBuildToolsPath)\Microsoft.CSharp.targets" &&
Expand Down
32 changes: 21 additions & 11 deletions Project2015To2017/Writing/ProjectWriter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,27 @@ internal XElement CreateXml(Project project, FileInfo outputFile)
{
projectNode.Add(import);
}
}

if (project.Targets != null)
{
foreach (var target in project.Targets.Select(RemoveAllNamespaces))
{
projectNode.Add(target);
}
}

if (project.ProjectReferences?.Count > 0)
}

if (project.Targets != null)
{
foreach (var target in project.Targets.Select(RemoveAllNamespaces))
{
projectNode.Add(target);
}
}

if (project.BuildEvents != null)
{
var propertyGroup = new XElement("PropertyGroup");
projectNode.Add(propertyGroup);
foreach (var buildEvent in project.BuildEvents.Select(RemoveAllNamespaces))
{
propertyGroup.Add(buildEvent);
}
}

if (project.ProjectReferences?.Count > 0)
{
var itemGroup = new XElement("ItemGroup");
foreach (var projectReference in project.ProjectReferences)
Expand Down
42 changes: 42 additions & 0 deletions Project2015To2017Tests/ProjectPropertiesTransformationTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -428,6 +428,48 @@ public async Task CopiesTFVCPropertyGroup()
Assert.AreEqual(4, project.AdditionalPropertyGroups[0].Elements().Count());
}

[TestMethod]
public async Task MaintainsPrePostBuildEvent()
{
var xml = @"
<Project DefaultTargets=""Build"" xmlns=""http://schemas.microsoft.com/developer/msbuild/2003"" ToolsVersion=""4.0"">
<Import Project=""$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"" Condition=""Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')"" />
<PropertyGroup>
<VisualStudioVersion Condition=""'$(VisualStudioVersion)' == ''"">15.0</VisualStudioVersion>
<OldToolsVersion>14.0</OldToolsVersion>
<DslTargetsPath>..\SDK\v15.0\MSBuild\DSLTools</DslTargetsPath>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<MinimumVisualStudioVersion>15.0</MinimumVisualStudioVersion>
</PropertyGroup>
<PropertyGroup>
<Configuration Condition="" '$(Configuration)' == '' "">Debug</Configuration>
<Platform Condition="" '$(Platform)' == '' "">AnyCPU</Platform>
<ProjectGuid>{D8141286-2A5C-4CC4-8502-8E651D35F371}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>ClassLibrary1</RootNamespace>
<AssemblyName>ClassLibrary1</AssemblyName>
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
</PropertyGroup>
<PropertyGroup>
<PostBuildEvent>CD $(SolutionDir)
if $(ConfigurationName) == Debug (
xcopy "".\Configuration\Log4Net\*.config"" ""$(TargetDir)"" /E /Y
)</PostBuildEvent>
</PropertyGroup>
</Project>";

var project = await ParseAndTransformAsync(xml).ConfigureAwait(false);

Assert.AreEqual(1, project.BuildEvents.Count);
}

private static async Task<Project> ParseAndTransformAsync(string xml)
{
var document = XDocument.Parse(xml);
Expand Down

0 comments on commit e9a2fdb

Please sign in to comment.