From f116a039fdcf8611ecbf0796d155cb836b70b90a Mon Sep 17 00:00:00 2001
From: Josh Kingery <joshking@microsoft.com>
Date: Thu, 19 Apr 2018 16:09:40 -0700
Subject: [PATCH 1/4] wip

---
 .../ILRepack.Lib.MSBuild.Task.csproj          |  4 ++++
 .../ILRepack.Lib.MSBuild.Task.props           | 14 +++++++++++
 .../ILRepack.Lib.MSBuild.Task.targets         | 23 ++++++++++++-------
 3 files changed, 33 insertions(+), 8 deletions(-)
 create mode 100644 ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props

diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj
index 3b80d3c..6cfa0e2 100644
--- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.csproj
@@ -71,6 +71,10 @@
       <SubType>Designer</SubType>
       <CopyToOutputDirectory>Always</CopyToOutputDirectory>
     </None>
+    <None Include="ILRepack.Lib.MSBuild.Task.props">
+      <SubType>Designer</SubType>
+      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
+    </None>
     <None Include="packages.config">
       <SubType>Designer</SubType>
     </None>
diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props
new file mode 100644
index 0000000..17df8ef
--- /dev/null
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+    <ILRepackCustomPropsImport Condition=" '$(ILRepackCustomPropsImport)' == '' ">$(MSBuildProjectDirectory)\ILRepack.Config.props</ILRepackCustomPropsImport>
+    <ILRepackCustomTargetsImport Condition=" '$(ILRepackCustomTargetsImport)' == '' ">$(MSBuildProjectDirectory)\ILRepack.Config.props</ILRepackCustomTargetsImport>
+  </PropertyGroup>
+  <Import Project="$(ILRepackCustomPropsImport)" Condition="Exists('$(ILRepackCustomPropsImport)')" />
+  <PropertyGroup>
+    <ILRepackDependsOn Condition=" '$(ILRepackDependsOn)' == '' ">ILRepackGetInputAssemblies</ILRepackDependsOn>
+    <ILRepackAfterTargets Condition=" '$(ILRepackAfterTargets)' == '' And '$(Configuration)' == 'Release' ">Build</ILRepackAfterTargets>
+    <ILRepackBeforeTargets Condition=" '$(ILRepackBeforeTargets)' == '' "></ILRepackBeforeTargets>
+	<CleanReferenceCopyLocalPathsAfterTargets Condition=" '$(CleanReferenceCopyLocalPathsAfterTargets)' == '' And '$(Configuration)' == 'Release' And '$(ClearOutputDirectory)' != 'False' ">ILRepack</CleanReferenceCopyLocalPathsAfterTargets>
+  </PropertyGroup>
+</Project>
\ No newline at end of file
diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
index e3222f2..739dafb 100644
--- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+  </PropertyGroup>
   <Import Project="$(ProjectDir)ILRepack.Config.props" Condition="Exists('$(ProjectDir)ILRepack.Config.props')" />
   <Choose>
     <When Condition="'$(ILRepackTargetsFile)' == ''">
@@ -10,26 +12,29 @@
   </Choose>
   <UsingTask AssemblyFile="$(MSBuildThisFileDirectory)ILRepack.Lib.MSBuild.Task.dll" TaskName="ILRepack" />
   <Import Project="$(ILRepackTargetsFile)" Condition="Exists('$(ILRepackTargetsFile)')" />
-  <Target Name="ILRepack" AfterTargets="Build" Condition="$(Configuration.Contains('Release')) and !Exists('$(ILRepackTargetsFile)')">
+  <Target Name="ILRepackGetInputAssemblies">
     <ItemGroup>
-      <InputAssemblies Include="$(OutputPath)$(TargetName)$(TargetExt)"/>
-      <InputAssemblies Include="$(OutputPath)*.dll" Exclude="$(OutputPath)$(TargetName)$(TargetExt)"/>
-    </ItemGroup>
-
+      <ILRepackInputAssemblies Include="$(OutputPath)$(TargetName)$(TargetExt)"/>
+      <ILRepackInputAssemblies Include="$(OutputPath)*.dll" Exclude="$(OutputPath)$(TargetName)$(TargetExt)"/>
+      <ILRepackInputAssemblies Remove="@(ILRepackAssembliesToIgnore)"/>
+    </ItemGroup>  
+  </Target>
+  <Target Name="ILRepack" AfterTargets="$(ILRepackAfterTargets)" DependsOnTargets="$(ILRepackDependsOn)" BeforeTargets="$(ILRepackBeforeTargets)" Condition=" !Exists('$(ILRepackTargetsFile)') ">
     <ILRepack
       Parallel="true"
       DebugInfo="true"
       AllowDuplicateResources="false"
-      InputAssemblies="@(InputAssemblies)"
+      InputAssemblies="@(ILRepackInputAssemblies)"
       TargetKind="SameAsPrimaryAssembly"
       KeyFile="$(KeyFile)"
       OutputFile="$(OutputPath)$(TargetName)$(TargetExt)"
+	  LibraryPath="@(ILRepackLibraryPath)"
     />
   </Target>
   <Target
-    AfterTargets="ILRepack"
+    AfterTargets="$(CleanReferenceCopyLocalPathsAfterTargets)"
     Name="CleanReferenceCopyLocalPaths"
-    Condition="$(Configuration.Contains('Release')) and !Exists('$(ILRepackTargetsFile)') and '$(ClearOutputDirectory)' != 'False'">
+    Condition=" !Exists('$(ILRepackTargetsFile)') ">
     <Delete Files="@(ReferenceCopyLocalPaths->'$(OutDir)%(DestinationSubDirectory)%(Filename)%(Extension)')" />
     <ItemGroup>
       <Directories Include="$([System.IO.Directory]::GetDirectories('$(OutDir)%(DestinationSubDirectory)', '*', System.IO.SearchOption.AllDirectories))" />
@@ -39,4 +44,6 @@
     </ItemGroup>
     <RemoveDir Directories="@(Directories)" Condition="%(Files)=='0'" />
   </Target>
+  
+  <Import Project="$(ILRepackCustomTargetImport)" Condition="Exists('$(ILRepackCustomTargetImport)')" />
 </Project>
\ No newline at end of file

From f559be1c1a35be30bdc14fad30a2065f93fba31a Mon Sep 17 00:00:00 2001
From: Josh Kingery <joshking@microsoft.com>
Date: Fri, 27 Apr 2018 11:34:32 -0700
Subject: [PATCH 2/4] fix white space

---
 ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props
index 17df8ef..8c89c3f 100644
--- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.props
@@ -9,6 +9,6 @@
     <ILRepackDependsOn Condition=" '$(ILRepackDependsOn)' == '' ">ILRepackGetInputAssemblies</ILRepackDependsOn>
     <ILRepackAfterTargets Condition=" '$(ILRepackAfterTargets)' == '' And '$(Configuration)' == 'Release' ">Build</ILRepackAfterTargets>
     <ILRepackBeforeTargets Condition=" '$(ILRepackBeforeTargets)' == '' "></ILRepackBeforeTargets>
-	<CleanReferenceCopyLocalPathsAfterTargets Condition=" '$(CleanReferenceCopyLocalPathsAfterTargets)' == '' And '$(Configuration)' == 'Release' And '$(ClearOutputDirectory)' != 'False' ">ILRepack</CleanReferenceCopyLocalPathsAfterTargets>
+    <CleanReferenceCopyLocalPathsAfterTargets Condition=" '$(CleanReferenceCopyLocalPathsAfterTargets)' == '' And '$(Configuration)' == 'Release' And '$(ClearOutputDirectory)' != 'False' ">ILRepack</CleanReferenceCopyLocalPathsAfterTargets>
   </PropertyGroup>
 </Project>
\ No newline at end of file

From cd9a4b6453750f0bd97e7767d75397004e7d254e Mon Sep 17 00:00:00 2001
From: Josh Kingery <joshking@microsoft.com>
Date: Fri, 27 Apr 2018 11:36:07 -0700
Subject: [PATCH 3/4] remove extra propertygroup

---
 ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets | 2 --
 1 file changed, 2 deletions(-)

diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
index 739dafb..bde0501 100644
--- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
@@ -1,7 +1,5 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
-  <PropertyGroup>
-  </PropertyGroup>
   <Import Project="$(ProjectDir)ILRepack.Config.props" Condition="Exists('$(ProjectDir)ILRepack.Config.props')" />
   <Choose>
     <When Condition="'$(ILRepackTargetsFile)' == ''">

From e56d3e7e5622266b4563f03481df1b844ed402bc Mon Sep 17 00:00:00 2001
From: Josh Kingery <joshking@microsoft.com>
Date: Fri, 27 Apr 2018 15:33:14 -0700
Subject: [PATCH 4/4] allow target to be remapped

---
 .../ILRepack.Lib.MSBuild.Task.targets                     | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
index bde0501..8192cf5 100644
--- a/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
+++ b/ILRepack.Lib.MSBuild.Task/ILRepack.Lib.MSBuild.Task.targets
@@ -1,5 +1,7 @@
 <?xml version="1.0" encoding="utf-8" ?>
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <PropertyGroup>
+  </PropertyGroup>
   <Import Project="$(ProjectDir)ILRepack.Config.props" Condition="Exists('$(ProjectDir)ILRepack.Config.props')" />
   <Choose>
     <When Condition="'$(ILRepackTargetsFile)' == ''">
@@ -18,6 +20,10 @@
     </ItemGroup>  
   </Target>
   <Target Name="ILRepack" AfterTargets="$(ILRepackAfterTargets)" DependsOnTargets="$(ILRepackDependsOn)" BeforeTargets="$(ILRepackBeforeTargets)" Condition=" !Exists('$(ILRepackTargetsFile)') ">
+    <PropertyGroup>
+      <ILRepackOutputAssembly Condition=" '$(ILRepackOutputAssembly)' == '' ">$(OutputPath)$(TargetName)$(TargetExt)</ILRepackOutputAssembly>
+    </PropertyGroup>
+    <MakeDir Directories="$([System.IO.Path]::GetDirectoryName($(ILRepackOutputAssembly)))"/>
     <ILRepack
       Parallel="true"
       DebugInfo="true"
@@ -25,7 +31,7 @@
       InputAssemblies="@(ILRepackInputAssemblies)"
       TargetKind="SameAsPrimaryAssembly"
       KeyFile="$(KeyFile)"
-      OutputFile="$(OutputPath)$(TargetName)$(TargetExt)"
+      OutputFile="$(ILRepackOutputAssembly)"
 	  LibraryPath="@(ILRepackLibraryPath)"
     />
   </Target>