diff --git a/.gitignore b/.gitignore index 1c9a181a..af66b9a2 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,14 @@ ## Ignore Visual Studio temporary files, build results, and ## files generated by popular Visual Studio add-ons. - # User-specific files *.suo *.user *.userosscache *.sln.docstates - # User-specific files (MonoDevelop/Xamarin Studio) *.userprefs - # Build results +/Harmony/build [Dd]ebug/ [Dd]ebugPublic/ [Rr]elease/ @@ -21,29 +19,23 @@ bld/ [Bb]in/ [Oo]bj/ - # Visual Studio 2015 cache/options directory .vs/ # Uncomment if you have tasks that create the project's static files in wwwroot #wwwroot/ - # MSTest test Results [Tt]est[Rr]esult*/ [Bb]uild[Ll]og.* - # NUNIT *.VisualState.xml TestResult.xml - # Build Results of an ATL Project [Dd]ebugPS/ [Rr]eleasePS/ dlldata.c - # DNX project.lock.json artifacts/ - *_i.c *_p.c *_i.h @@ -68,10 +60,8 @@ artifacts/ *.pidb *.svclog *.scc - # Chutzpah Test files _Chutzpah* - # Visual C++ cache files ipch/ *.aps @@ -81,48 +71,36 @@ ipch/ *.sdf *.cachefile *.VC.db - # Visual Studio profiler *.psess *.vsp *.vspx *.sap - # TFS 2012 Local Workspace $tf/ - # Guidance Automation Toolkit *.gpState - # ReSharper is a .NET coding add-in _ReSharper*/ *.[Rr]e[Ss]harper *.DotSettings.user - # JustCode is a .NET coding add-in .JustCode - # TeamCity is a build add-in _TeamCity* - # DotCover is a Code Coverage Tool *.dotCover - # NCrunch _NCrunch_* .*crunch*.local.xml nCrunchTemp_* - # MightyMoose *.mm.* AutoTest.Net/ - # Web workbench (sass) .sass-cache/ - # Installshield output folder [Ee]xpress/ - # DocProject is a documentation generator add-in DocProject/buildhelp/ DocProject/Help/*.HxT @@ -132,20 +110,16 @@ DocProject/Help/*.hhk DocProject/Help/*.hhp DocProject/Help/Html2 DocProject/Help/html - # Click-Once directory publish/ - # Publish Web Output *.[Pp]ublish.xml *.azurePubxml - # TODO: Un-comment the next line if you do not want to checkin # your web deploy settings because they may include unencrypted # passwords #*.pubxml *.publishproj - # NuGet Packages *.nupkg # The packages folder can be ignored because of Package Restore @@ -157,25 +131,20 @@ publish/ # NuGet v3's project.json files produces more ignoreable files *.nuget.props *.nuget.targets - # Microsoft Azure Build Output csx/ *.build.csdef - # Microsoft Azure Emulator ecf/ rcf/ - # Windows Store app package directory AppPackages/ BundleArtifacts/ - # Visual Studio cache files # files ending in .cache can be ignored *.[Cc]ache # but keep track of directories ending in .cache !*.[Cc]ache/ - # Others ClientBin/ [Ss]tyle[Cc]op.* @@ -187,10 +156,8 @@ ClientBin/ *.publishsettings node_modules/ orleans.codegen.cs - # RIA/Silverlight projects Generated_Code/ - # Backup & report files from converting an old project file # to a newer Visual Studio version. Backup files are not needed, # because we have git ;-) @@ -198,31 +165,23 @@ _UpgradeReport_Files/ Backup*/ UpgradeLog*.XML UpgradeLog*.htm - # SQL Server files *.mdf *.ldf - # Business Intelligence projects *.rdl.data *.bim.layout *.bim_*.settings - # Microsoft Fakes FakesAssemblies/ - # GhostDoc plugin setting file *.GhostDoc.xml - # Node.js Tools for Visual Studio .ntvs_analysis.dat - # Visual Studio 6 build log *.plg - # Visual Studio 6 workspace options file *.opt - # Visual Studio LightSwitch build output **/*.HTMLClient/GeneratedArtifacts **/*.DesktopClient/GeneratedArtifacts @@ -230,13 +189,10 @@ FakesAssemblies/ **/*.Server/GeneratedArtifacts **/*.Server/ModelManifest.xml _Pvt_Extensions - # LightSwitch generated files GeneratedArtifacts/ ModelManifest.xml - # Paket dependency manager .paket/paket.exe - # FAKE - F# Make .fake/ diff --git a/Harmony.sln b/Harmony.sln index b59b89d5..3c5f36dc 100644 --- a/Harmony.sln +++ b/Harmony.sln @@ -9,18 +9,24 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HarmonyTests", "HarmonyTest EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU + Debug-3.5|Any CPU = Debug-3.5|Any CPU + Debug-4.7.1|Any CPU = Debug-4.7.1|Any CPU + Release-3.5|Any CPU = Release-3.5|Any CPU + Release-4.7.1|Any CPU = Release-4.7.1|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution - {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug|Any CPU.Build.0 = Debug|Any CPU - {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release|Any CPU.ActiveCfg = Release|Any CPU - {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release|Any CPU.Build.0 = Release|Any CPU - {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Debug|Any CPU.Build.0 = Debug|Any CPU - {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Release|Any CPU.ActiveCfg = Release|Any CPU - {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Release|Any CPU.Build.0 = Release|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug-3.5|Any CPU.ActiveCfg = Debug-3.5|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug-3.5|Any CPU.Build.0 = Debug-3.5|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug-4.7.1|Any CPU.ActiveCfg = Debug-4.7.1|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Debug-4.7.1|Any CPU.Build.0 = Debug-4.7.1|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release-3.5|Any CPU.ActiveCfg = Release-3.5|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release-3.5|Any CPU.Build.0 = Release-3.5|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release-4.7.1|Any CPU.ActiveCfg = Release-4.7.1|Any CPU + {69AEE16A-B6E7-4642-8081-3928B32455DF}.Release-4.7.1|Any CPU.Build.0 = Release-4.7.1|Any CPU + {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Debug-3.5|Any CPU.ActiveCfg = Debug-3.5|Any CPU + {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Debug-4.7.1|Any CPU.ActiveCfg = Debug-4.7.1|Any CPU + {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Release-3.5|Any CPU.ActiveCfg = Release-3.5|Any CPU + {DEE74EFC-29A8-4704-8536-7DA38D3999F7}.Release-4.7.1|Any CPU.ActiveCfg = Release-4.7.1|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Harmony/Attributes.cs b/Harmony/Attributes.cs index 9164c577..165a058d 100644 --- a/Harmony/Attributes.cs +++ b/Harmony/Attributes.cs @@ -1,5 +1,4 @@ using System; -using System.Reflection; namespace Harmony { diff --git a/Harmony/CodeInstruction.cs b/Harmony/CodeInstruction.cs index 091a6aa7..93fa0f64 100644 --- a/Harmony/CodeInstruction.cs +++ b/Harmony/CodeInstruction.cs @@ -25,6 +25,26 @@ public CodeInstruction(CodeInstruction instruction) labels = instruction.labels.ToArray().ToList(); } + public CodeInstruction Clone() + { + return new CodeInstruction(this) { labels = new List