This change moves powershell to .NET Core 2.0. Major changes are:
1. PowerShell assemblies are now targeting `netcoreapp2.0`. We are using `microsoft.netcore.app-2.0.0-preview1-001913-00`, which is from dotnet-core build 4/4/17. We cannot target `netstandard2.0` because the packages `System.Reflection.Emit` and `System.Reflection.Emit.Lightweight`, which are needed for powershell class, cannot be referenced when targeting `netstandard2.0`.
2. Refactor code to remove most CLR stub types and extension types.
3. Update build scripts to enable CI builds. The `-cache` section is specified to depend on `appveyor.yml`, so the cache will be invalidated if `appveyor.yml` is changed.
4. Ship `netcoreapp` reference assemblies with powershell to fix the issues in `Add-Type` (#2764). By default `Add-Type` will reference all those reference assemblies when compiling C# code. If `-ReferenceAssembly` is specified, then we search reference assemblies first, then the framework runtime assemblies, and lastly the loaded assemblies (possibly a third-party one that was already loaded).
5. `dotnet publish` generates executable on Unix platforms, but doesn't set "x" permission and thus it cannot execute. Currently, the "x" permission is set in the build script, `dotnet/cli` issue [#6286](https://github.com/dotnet/cli/issues/6286) is tracking this.
6. Replace the use of some APIs with the ones that take `SecureString`.
7. osx.10.12 is required to update to `netcoreapp2.0` because `dotnet-cli` 2.0.0-preview only works on osx.10.12.
8. Add dependency to `System.ValueTuple` to work around a ambiguous type identity issue in coreclr. The issue is tracked by `dotnet/corefx` [#17797](https://github.com/dotnet/corefx/issues/17797). When moving to newer version of `netcoreapp2.0`, we need to verify if this dependency is still needed.
- FullCLR build is disabled in this change.
- FullCLR build related functionalities in `build.psm1` and `AppVeyor.psm1` are disabled. They are not cleaned up from `build.psm1` and `AppVeyor.psm1` yet. We need to adopt .NET Core 2.0 to verify the portable module concept, and if that works well, we will remove the Windows PowerShell source code and clean up our scripts.
- `dnxcore50` and `portable-net5+win8` target framework monikers are removed.
- Dependency on `Microsoft.NETCore.Portable.Compatibility` is removed. It's not necessary, but it may come back when we work on supporting the `portable module`. Its necessity can be reviewed at that time.
- I didn't spend the time to try building powershell in Visual Studio 2017. We should have a separate issue for that. It's tracked by #3400
The `TypeCatalogParser` project is replaced by a MSBuild target to gather the dependency information.
Due to .NET Core SDK issue [#1021](https://github.com/dotnet/sdk/issues/1021), our meta-package project `Microsoft.PowerShell.SDK` starts to generate an empty assembly during the build and that results in an empty assembly `Microsoft.PowerShell.SDK.dll` appear in `publish` folder and in `.deps.json` file. We cannot simply remove the assembly because it's now part of the TPA, and removing it will cause powershell to crash at startup. We have to live with this empty assembly until that .NET Core SDK issue is fixed. It's tracked by #3401.
* Initial support for Fedora 24
This commit adds initial support for the Fedora distribution,
starting with Fedora 24.
Whereever possible, build tooling for CentOS has been reused.
Until the next release of PowerShell is compiled against .NET 1.1,
the Docker release image uses the CentOS 7 build, but loads
in the CentOS 7 version of `libicu50` via LD_LIBRARY_PATH.
* Update Dockerfile
Fix typos
* Initial support for Fedora 24
This commit adds initial support for the Fedora distribution,
starting with Fedora 24.
Whereever possible, build tooling for CentOS has been reused.
Until the next release of PowerShell is compiled against .NET 1.1,
the Docker release image uses the CentOS 7 build, but loads
in the CentOS 7 version of `libicu50` via LD_LIBRARY_PATH.
* Update Dockerfile
Fix typos
* Rebase onto .NET Core 1.1
Modify `Build.psm1` and `project.json` files to use .NET Core 1.1.
.NET Core 1.1 ships with an older dotnet/cli than has currently been used,
so we revert to use case-sensitive directory names for dependencies.
.NET Core 1.1 is a pre-requisite for supporting Fedora 24.
* PSReadLine: Bump major version of PSReadline to 6.0.0-*
* Microsoft.PowerShell.Commands.Utility: Bump major version of Microsoft.CodeAnalysis.Csharp
* Microsoft.PowerShell.SDK: Revert attempt to import netcoreapp1.1 instead of dnxcore
* build.psm1: Restore ability to specify version of dotnet-install.sh
This app is used for basic PSReadLine functionality testing.
Squashed commit of the following:
commit 3c1ac0aa87df663d0cfb1346352fd240a6ad1fa4
Author: jason@truewheels.net <jason@truewheels.net>
Date: Sun Dec 13 09:23:31 2015 -0800
Use nuget packages for PowerShell SDK.
commit 0fe7731a68d62af9508200a067aa162cb5154f68
Author: jason@truewheels.net <jason@truewheels.net>
Date: Sat Nov 14 20:11:50 2015 -0800
Merge branch 'master' of https://github.com/srdubya/PSReadLine into vimode
commit aa6510e19887dd2cb1ed7fa06b172dc456b0cede
Author: Jason Shirk (POWERSHELL) <jasonsh@microsoft.com>
Date: Thu Jun 18 18:24:23 2015 -0700
Fix/suppress various FxCop errors
commit d59a997c3a2b4d18b91e0f937fc4ff76e58929f1
Author: Jason Shirk (POWERSHELL) <jasonsh@microsoft.com>
Date: Thu Jun 18 15:32:20 2015 -0700
Rename namespace PSConsoleUtilities to Microsoft.PowerShell
commit 258a8f28db90d98b8785487516544836ce42bb4e
Author: jason@truewheels.net <jason@truewheels.net>
Date: Fri Sep 26 18:15:19 2014 -0700
Fix exception after AcceptAndGetNext
The "current" line cleared after accepting via AcceptAndGetNext
and we would crash trying to recall this current line.
I've changed how history search works after AcceptAndGetNext
to work in a more natural way so that arrow keys can be used
to recall commands near the accepted command instead of
searching for other commands with the same prefix.
Fixes#152.
commit e069ed088a9ea970d8b0e9cdb990da5ad4d20f01
Author: jason@truewheels.net <jason@truewheels.net>
Date: Tue Sep 9 17:36:59 2014 -0700
Add ValidateAndAcceptLine function
To avoid cluttering the screen and history with command lines
that don't work because of stupid errors like "command not found",
you can bind enter to ValidateAndAcceptLine.
commit cb81fa2cc4708ee54214320dc6ce8564e38a1642
Author: jason@truewheels.net <jason@truewheels.net>
Date: Fri Jun 27 20:58:57 2014 -0700
Fix prompt error highlight characters
When deciding what character to color red for errors, we were
using IsSymbol - that was a bit too restrictive so it was changed
to be any non-whitespace and non-alphanumeric characters.
Fixes#127
commit 0ecd15d909ea31ccd9390c15d295af2f750d0d68
Author: Jason Shirk <jason@truewheels.net>
Date: Thu Jun 12 14:09:17 2014 -0700
Attempt better recovery from an exception
If an exception occurs when editing the command line, display some
diagnostic information so that I might get a bug report. Also
attempt to restore the command line so they can continue editing.
commit 079d18223c7e49638c96f4533d27198b47a5d2bb
Author: jason@truewheels.net <jason@truewheels.net>
Date: Thu Apr 17 09:28:04 2014 -0700
Tweak for easier testing
commit d79bf5056bdef0a165ee453c5f7b45e528cc0681
Author: jason@truewheels.net <jason@truewheels.net>
Date: Sun Apr 13 11:21:30 2014 -0700
Cleanup some Resharper issues
commit 1258dd12cab81d07aa52d388468ee9ef99063664
Author: jason@truewheels.net <jason@truewheels.net>
Date: Sun Jan 26 20:21:22 2014 -0800
InvokePrompt tests
Removed Console.WriteLine replacement as it didn't work for InvokePrompt.
Changed test harness to override VS and actually write stdout to the screen.
commit 526b0b5123c88cd8f47a166f376f34356976edb5
Author: jason@truewheels.net <jason@truewheels.net>
Date: Fri Jan 24 23:00:48 2014 -0800
Remove custom bindings
commit fd0679c0da99da5ae4e1d5a59842b1fb0a9af6c2
Author: jason@truewheels.net <jason@truewheels.net>
Date: Fri Jan 3 00:09:49 2014 -0800
Add CaptureScreen function
CaputureScreen is used to copy lines from the screen to the clipboard.
Text is copied in plain text as well as rtf with colors.
Rtf looks best in Outlook - which is my primary reason for adding the feature.
commit e2a0b53f72a0e6a39a9736a3c1a3d2a6b1b81184
Author: Jason Shirk <jason@truewheels.net>
Date: Fri Nov 15 07:29:12 2013 -0800
Fix Undo after Paste
commit 8453eca0dd9ffe0cb160fefb12d0be935e64ec85
Author: Jason Shirk <jason@truewheels.net>
Date: Fri Nov 15 00:30:50 2013 -0800
Ctrl-R support
commit 0b058c2aaee18b33d97dd8d375fac7bbf4d07ce9
Author: Jason Shirk <jason@truewheels.net>
Date: Sat Nov 2 08:49:48 2013 -0700
Really exit from test program when typing exit
Exit wasn't exiting anymore because the thread that reads keys was blocked.
commit e9d5203346f62dacc6315c8e8cb4dc227a6477df
Author: Jason Shirk <jason@truewheels.net>
Date: Mon Sep 23 09:03:59 2013 -0700
Comment out history search in test program
commit 674f90a64c5c627d50f6b018511eb9585640d65a
Author: Jason Shirk <jason@truewheels.net>
Date: Thu Sep 19 09:18:19 2013 -0700
Add demo mode and ETW trace
Added ETW tracing for key presses (a key logger!) so it can be used
in a variety of ways, e.g. when doing performance profiling, you can
add a message of sorts via key presses if you turn on the provider.
The ETW tracing code depends on CLR 4.5, this might force some folks
to upgrade.
Added PSReadline.EnableDemoMode which uses the ETW trace to display
key presses while you type. This is useful for talks and producing
screen captures to show the editing experience.
commit 222a5efea732d6c34e5263b638d5d3fc04407355
Author: Jason Shirk <jason@truewheels.net>
Date: Wed Sep 11 17:55:30 2013 -0700
Support 2 key chords
Support for 2 key chords has been added.
There is a small breaking change in Set-PSReadlineKeyHandler
because the -CtrlX switch is no longer needed. It could have
been left in, but it's better to just remove it - not very
many people use this module yet.
The signature of key handlers was also changed to better support
features that have not yet been implemented. The signature change
shouldn't affect any existing key handlers because default arguments
should cover those cases.
commit 3121bcbf6c57b98ead2cc525f8d3d40cbc54c49e
Author: Jason Shirk <jason@truewheels.net>
Date: Fri May 24 19:56:34 2013 -0700
Add Get-PSReadlineKeyHandler
To make it easier to see what keys are bound, you can use the command Get-PSReadlineKeyHandler.
The command Set-PSReadlineKeyHandler also adds support for binding Ctrl-X prefixed commands in Emacs mode.
commit ed78159f1a27f7a78a26fbad555203dcee94a05c
Author: Jason Shirk <jason@truewheels.net>
Date: Sun May 12 23:52:15 2013 -0700
Initial checkin.